日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS开发 Block的学习

發布時間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS开发 Block的学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  蘋果公司正在大力推廣Block塊語法的使用,據說Block會遲早取代一般協議代理的使用.

  Block最大的作用是函數回調,簡化代碼.

  在ios中,將blocks當成對象來處理,它封裝了一段代碼,這段代碼可以在任何時候執行。Blocks可以作為函數參數或者函數的返回值,而其本身又可以帶輸入參數或返回值。它和傳統的函數指針很類似,但是有區別:blocks是inline的,并且它對局部變量是只讀的。

block官方定義:

?

示例的詳解如下:?

?



?

?

  注意block可以使用其定義范圍內的變量.

?

  如果你把block聲明為一個變量,你可以把它當一個函數(function,本文中特指C語言形式的函數)一樣調用:

?

block定義:

  int?(^myBlock)?(int?a,int?b)?=?^(int?a,int?b){ ? ? ?

?    return?a+b; ??

  ?};

?

   如果要修改就要加關鍵字:__block ? 雙下劃線哦!!!

?

?

  簡單的回調,廢話不多說,直接上代碼!!! ?第二個頁面往第一個頁面回調

  先在第二個頁面定義一個塊,然后寫一個方法使用block;

  #import<UIKit/UIKit.h>

  typedefvoid(^myBlock)(NSString*,NSString*,NSInteger);

  @interfaceSecondViewController:UIViewController

  {

?   ? myBlockblock;

  }

?

  -(void)passValueUsingBlock:(myBlock)block1;

?

  @end

?  .m文件

  #import"SecondViewController.h"

?

  @interfaceSecondViewController()

  -(IBAction)Back:(id)sender;

?

  @end

?

  @implementationSecondViewController

?

?

  -(void)passValueUsingBlock:(myBlock)block1

  {

? ?   block=block1;

  }

?

  -(void)viewDidLoad

  {

?   ? [superviewDidLoad];

  }

?

  -(IBAction)Back:(id)sender{

?   ? block(@"hello",@"女",21);

?   ? [selfdismissViewControllerAnimated:YEScompletion:nil];

  }

  @end

?

?

  在第一個頁面調用這個方法

  

#import"RootViewController.h"

#import"SecondViewController.h"

@interfaceRootViewController()

@property(weak,nonatomic)IBOutletUITextField*name;

@property(weak,nonatomic)IBOutletUITextField*sex;

@property(weak,nonatomic)IBOutletUITextField*age;

-(IBAction)Push:(id)sender;

?

@end

?

@implementationRootViewController

?

-(void)viewDidLoad

{

? ? [superviewDidLoad];

? ? //Doanyadditionalsetupafterloadingtheviewfromitsnib.

}

?

-(IBAction)Push:(id)sender{

? ? SecondViewController*second=[[SecondViewControlleralloc]init];

? ? [secondpassValueUsingBlock:^(NSString*name,NSString*sex,NSIntegerage){

? ? ? ? self.name.text=name;

? ? ? ? self.sex.text=sex;

? ? ? ? self.age.text=[NSStringstringWithFormat:@"%d",age];

? ? }];

? ? [selfpresentViewController:secondanimated:YEScompletion:nil];

}

@end

?

  

?

?

?

?

?

轉載于:https://www.cnblogs.com/moyunmo/p/3371599.html

總結

以上是生活随笔為你收集整理的IOS开发 Block的学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。