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属性实现页面之间传值

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

推荐阅读更多精彩内容

  • 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容...
    WeiHing阅读 13,320评论 10 69
  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 9,135评论 0 23
  • Block是iOS开发中一种比较特殊的数据结构,它可以保存一段代码,在合适的地方再调用,具有语法简介、回调方便、编...
    飞鱼湾阅读 9,565评论 0 7
  • 目录 Block概述 Block定义方式 Block保存代码 Block传值 Block对外部变量的传递 Bloc...
    子斌阅读 5,237评论 2 7
  • Block是iOS在4.0之后新增的程式语法,严格来说block的概念并不算是基础程式设计的范围,对初学者来说也不...
    Bager阅读 4,411评论 0 0