17、Cocoa开发:多线程、块与数据集合的深入应用

Cocoa开发:多线程、块与数据集合的深入应用

1. 多线程与块的使用

1.1 NSOperation的局限性与块的引入

NSOperation存在灵活性不足的问题。若应用程序需要对许多不同任务进行排队,为每个任务创建自定义子类会耗费大量时间。不过,NSOperation已得到扩展,支持使用块来定义任务代码,这样就能更流畅地使用内联代码或预定义代码块。

1.2 块的基础

块是Objective - C中的新特性,借鉴了其他语言(如Ruby)的类似用法。块虽为对象,但使用起来像函数。块代码可内联创建,也能在单独声明中定义,通过块指针调用,其语法与对象指针类似但有修改。

块能替代委托和选择器这两种设计模式。委托和选择器相关代码可能分散在多个对象中,难以理解,而块代码是内联的,便于阅读和维护。

从技术上讲,块封装了一段代码以及创建时所有相关变量的状态,这使得变量和参数赋值变得复杂。默认情况下,块定义时变量值是固定的,若要使其可变,需在变量前加 __block 指令。

1.3 块的语法

块由可选的头部和包含块代码的主体两部分组成。支持块的类允许仅使用主体的块作为内联代码,但这可能会禁用某些功能,如参数传递或返回值支持。

块用 ^ (脱字符)标记,用花括号分隔,后面可跟单引号。示例代码如下:

aBlock = ^{ some code goes here};

若未定义参数或返回值,则默认

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值