2018-04-26

假设对象A调用B来执行一项操作,操作一旦完成,对象A就必须知道对象B已完成任务且对象A将执行其他必要操作。

A是B的委托对象

B引用一个A

A将实现B的委托方法

B通过委托方法通知

//协议定义

@protocol MyDelegate<NSObject>

...代理方法

@end

....

@property(nonatomic,week)id<MyDelegate>delegate;

截获自动变量值

block表达式可截获所使用的自动变量的值.

截获:保存自动变量的瞬间值.

因为是“瞬间值”,所以声明Block之后,即便在Block外修改自动变量的值,也不会对Block内截获的自动变量值产生影响。

inti =10;void(^blk)(void) = ^{NSLog(@"In block, i = %d", i); }; i =20;//Block外修改变量i,也不影响Block内的自动变量blk();//i修改为20后才执行,打印: In block, i = 10NSLog(@"i = %d", i);//打印:i = 20

__block说明符号

自动变量截获的值为Block声明时刻的瞬间值,保存后就不能改写该值,如需对自动变量进行重新赋值,需要在变量声明前附加__block说明符,这时该变量称为__block变量。

例如:

__blockinti =10;//i为__block变量,可在block中重新赋值void(^blk)(void) = ^{NSLog(@"In block, i = %d", i);    };    i =20;    blk();//打印: In block, i = 20NSLog(@"i = %d", i);//打印:i = 20

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,729评论 8 265
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    卑微的戏子阅读 641评论 0 1
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    iOS菜鸟大大阅读 761评论 0 1
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类...
    司马DE晴空阅读 1,347评论 0 7
  • 一个小小的简介 作者鹿汐 一枚写手新人 混二次写同人的 也写一点自己的文啊什么的 萌全职喻黄/双花/方王 /狐妖白...
    鹿小汐汐汐汐汐阅读 176评论 0 0