Cocoa开发:多线程、块与数据集合的深入应用
1. 多线程与块的使用
1.1 NSOperation的局限性与块的引入
NSOperation存在灵活性不足的问题。若应用程序需要对许多不同任务进行排队,为每个任务创建自定义子类会耗费大量时间。不过,NSOperation已得到扩展,支持使用块来定义任务代码,这样就能更流畅地使用内联代码或预定义代码块。
1.2 块的基础
块是Objective - C中的新特性,借鉴了其他语言(如Ruby)的类似用法。块虽为对象,但使用起来像函数。块代码可内联创建,也能在单独声明中定义,通过块指针调用,其语法与对象指针类似但有修改。
块能替代委托和选择器这两种设计模式。委托和选择器相关代码可能分散在多个对象中,难以理解,而块代码是内联的,便于阅读和维护。
从技术上讲,块封装了一段代码以及创建时所有相关变量的状态,这使得变量和参数赋值变得复杂。默认情况下,块定义时变量值是固定的,若要使其可变,需在变量前加 __block 指令。
1.3 块的语法
块由可选的头部和包含块代码的主体两部分组成。支持块的类允许仅使用主体的块作为内联代码,但这可能会禁用某些功能,如参数传递或返回值支持。
块用 ^ (脱字符)标记,用花括号分隔,后面可跟单引号。示例代码如下:
aBlock = ^{ some code goes here};
若未定义参数或返回值,则默认
超级会员免费看
订阅专栏 解锁全文
963

被折叠的 条评论
为什么被折叠?



