美文网首页
block回调

block回调

作者: 天空DE背面是阳光 | 来源:发表于2016-07-15 10:41 被阅读77次

每个刚接触OC的童鞋们,对block的使用都很头痛。

block是一个闭包,类似于函数,但是我们调用的时候传递的是一个代码块,它可以存在参数,这个参数并不是在定义block的时候就赋予值, 而是我们在实际运行block的时候才赋予值.(这一点需要注意,只有我们调用block时,才会运行代码块)

废话少说,下面我就讲下block作为形参和属性的时区别(直接上代码)

================================================

先建两个类,A类、B类;A跳转B类,通过block将B类的参数值回传A类

              --  A类  --                                                        -- B类 --

先在B类.h中声明一个代码块

typedef void(^changeLabel)(NSString * str)

1、block作为属性

(1)建立B类

在B.h中声明:

@property(nonatomic,copy)changeLabel blockOne;//作为属性

在B.m中:

- (void)viewWillDisappear:(BOOL)animated{

//    block调用(相当于函数的调用)

if (self.blockOne) {

self.blockOne(self.textField.text);//将B类中的文本框的内容传递给A类

}

}

(2)建立A类

在A.m中:

- (IBAction)next:(id)sender {

BClassVC  *b =[[BClassVC alloc]init];

//    block的定义类比于函数的定义(这个block只有在B类中被调用时才会执行,通过回调,将B类中的文本框的内容传递给A类)

b.blockOne= ^(NSString * str){

_label.text = str;

NSLog(@"======%@===blockOne=====",str);

};

[self.navigationController pushViewController:vc animated:YES];

}

2、block作为参数

(1)建立B类

在B.h中:

- (void)para:(changeLabel)blockTwo;//作为形参

在B.m中:

- (void)para:(changeLabel)blockTwo{

blockTwo(@"====para:(changeLabel)blockTwo===");

}

(2)建立A类

在A.m中

- (IBA)Click:(id)sender{

BClassVC  *b =[[BClassVC alloc]init];

/*调用para:(changeLabel)blockTwo

通过形参Block回调打印“====para:(changeLabel)blockTwo===”*/

[b para:^(NSString *str) {

NSLog(@"%@",str);

}];

}

欢迎常来,不足之处,各位小伙伴多提意见,一起交流,一起进步。

相关文章

  • iOS block 防循环引用

    一般来说我们总会在设置Block之后,在合适的时间回调Block,而不希望回调Block的时候Block已经被释放...

  • block回调

    每个刚接触OC的童鞋们,对block的使用都很头痛。 block是一个闭包,类似于函数,但是我们调用的时候传递的是...

  • block回调

    1.第一步:定义block指针@property (nonatomic,copy) void(^cateGoryB...

  • [swift]回调block回调

    在OC中习惯应用block进行事件回调,到swift中依然想找到这种简洁的回调事件,下面将介绍如何在swift中使...

  • iOS 多播委托

    iOS回调有Delegate,NSNotificationCenter,block,kvo。但是项目中回调 有种情...

  • IOS面试之block什么时候需要构造循环引用

    在网络请求API会持有回调的block,回调的block会持有self,而self也持有网络请求API的话,我们就...

  • Thread 1: EXC_BREAKPOINT (code=1

    崩溃分析:此次崩溃发生在block的回调中。如图: 原因:此临时block被多次回调,但是block中的参数 即:...

  • iOS 开发 高德-----定位

    单次定位 初始化 Block 回调(单次定位请求后Block回调) 持续定位 初始化 接收/处理位置更新 方向定位...

  • UI(二十)block

    *block代码块 闭包(一个区域)与C语言函数类似 *block具有反向传值、回调的功能 回调:执行完毕之后返回...

  • OC NSURLSession网络请求

    (1)通过Block回调的API 单例 注: 通过block回调的方法只适合用于数据小的请求,例如图片 (2)通过...

网友评论

      本文标题:block回调

      本文链接:https://www.haomeiwen.com/subject/znlyjttx.html