iOS-block的学习

1.Block是C语言层次的语法,有点类似函数指针,具有运行时的特点

Block objects are a C-level syntactic and runtime feature that allow you to compose function expressions that can be passed as arguments, optionally stored, and used by multiple threads.

iOS SDK 4.0开始,Apple引入了block这一特性,block就是一个代码块,但是它的神奇之处在于在内联(inline)执行的时候(这和C++很像)还可以传递参数。同时block本身也可以被作为参数在方法和函数间传递,这就给予了block无限的可能。

------------------------------------------------------------

2.Block使用


定义Block:

int (^oneFrom)(int);

创建Block:

oneFrom = ^(int anInt) {

return anInt - 1;

};

使用Block

printf("%d\n", oneFrom(10));


说明:

   (1)在类中,定义一个Block变量,就像定义一个函数;

(2)Block可以定义在方法内部,也可以定义在方法外部;

(3)只有调用Block时候,才会执行其{}体内的代码;

------------------------------------------------------------

3.Block使用场景


Block很多的用处是跨越两个类来使用的,Block块是在栈中的,除了块就为空

------------------------------------------------------------

4.__block关键字的使用

当在block中腰修改外部的变量时,需要在外部的变量加_Block关键字(外部变量是在block申明时被拷贝下来的,所以外部变量改变时block内对齐的拷贝无影响)

另外一种方法是:使用实例变量

------------------------------------------------------------

5.Block作为property属性实现页面之间传值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容...
    WeiHing阅读 13,351评论 10 69
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,466评论 30 472
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,710评论 18 399
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,790评论 0 6
  • 你是我见不到的过去,是我没能相伴的未来,希望时光会温柔以待。 2017年11月22日 星期三 阴 01 深深地注视...
    青清风阅读 4,278评论 17 20

友情链接更多精彩内容