block传值
block传值主要应用于反向页面传值,我们需要在第二个页面定义一个block用来传值
定义一个属性 为了防止block的循环引用,block一搬都定义为copy属性
@property (copy) void (^block) (NSString*);也传递一个字符串
返回值类型 block的名字 block的参数 ^block的标志
看到小箭头一定是个block
//定义一个block进行反向传值
一个block定义好了,block写法相对来说麻烦了一些,但是非常好用,建议大家经常去使用block,用多了自然就写熟了
页面2 跳转回页面1 的时候进行传值
直接调用self.block()传值就可以了 他的传值方式 也和C语言一样,可以理解为block就是一个C语言函数,小括号就是C语言里的小括号,小括号里面传递的就是我们的实参
//block传值--反向传值
self.block(self.textField.text);
回到页面1 如何来接收这个block呢,block不像协议 实现协议方法就可以了,block需要实现的话 它是一个对象的属性,我们要向实现block就是实现这个对象的属性,所以我们在创建页面2 的时候,我们就要实现这个block.
一面传值 一面接收值
block传值
苹果最推荐也是目前最为流行的一种传值方式,它和代理传值做着一样的工作,代理传值能做的工作block都能做,他比代理传值写法更简单更容易理解一些,这是近两年苹果主推的一种传值的方式。
页面1跳转到页面2 页面2回调block进行传值
页面1只需要实现block接收数据就可以了
简单在不需要设置代理也不需要定义一个协议
block传值:可以做代理传值能做的一切工作,主要应用于反向页面传值
过程:在第二个页面定义一个block用于传值(copy属性),进行页面反响传值;早页面二跳转回页面一的时候进行传值;回到页面一(实现block属性),接收来自页面二的值,传的值存放在str里;()接收来自页面二的值,把它显示在页面一的lable上;
对比C语言函数指针??