内容简介:
本书在苹果公司公开的源代码基础上,深入剖析了对应用于内存管理的ARC 以及应用于多线程开发的Blocks 和GCD。这些新技术看似简单,实则非常容易成为技术开发的陷阱,开发者仅靠阅读苹果公司的文档是不够的。
本书适合有一定基础的iOS 开发者阅读。
作者简介:
Kazuki Sakamoto
日本资深软件工程师,具有17年开发经验。在StackOverflow上的威望值超过4500。著有《iOS 4编程基础》、《iPhone&iPad cocos2d游戏编程》等。Twitter:@splhack。
Tomohiko Furumoto
日本资深软件工程师,擅长游戏和移动应用开发。Twitter:@munakoiso。
目录:
第1章 自动引用计数1
1.1 什么是自动引用计数2
1.2 内存管理/引用计数2
1.2.1 概要2
1.2.2 内存管理的思考方式5
1.2.3 alloc/retain/release/dealloc实现13
1.2.4 苹果的实现17
1.2.5 autorelease20
1.2.6 autorelease实现24
1.2.7 苹果的实现26
1.3 ARC规则29
1.3.1 概要29
1.3.2 内存管理的思考方式30
1.3.3 所有权修饰符30
1.3.4 规则50
1.3.5 属性62
1.3.6 数组63
1.4 ARC的实现65
1.4.1 __strong修饰符65
1.4.2 __weak修饰符67
1.4.3 __autoreleasing修饰符75
1.4.4 引用计数76
第2章 Blocks79
2.1 Blocks概要80
2.1.1 什么是Blocks80
2.2 Blocks模式83
2.2.1 Block语法83
2.2.2 Block类型变量85
2.2.3 截获自动变量值88
2.2.4 __block说明符88
2.2.5 截获的自动变量89
2.3 Blocks的实现91
2.3.1 Block的实质91
2.3.2 截获自动变量值99
2.3.3 __block说明符102
2.3.4 Block存储域108
2.3.5 __block变量存储域117
2.3.6 截获对象121
2.3.7 __block变量和对象126
2.3.8 Block循环引用128
2.3.9 copy/release134
第3章 Grand Central Dispatch137
3.1 Grand Central Dispatch(GCD)概要138
3.1.1 什么是GCD138
3.1.2 多线程编程140
3.2 GCD的API144
3.2.1 Dispatch Queue144
3.2.2 dispatch_queue_create147
3.2.3 Main Dispatch Queue/Global Dispatch Queue150
3.2.4 dispatch_set_target_queue153
3.2.5 dispatch_after154
3.2.6 Dispatch Group155
3.2.7 dispatch_barrier_async157
3.2.8 dispatch_sync160
3.2.9 dispatch_apply161
3.2.10 dispatch_suspend / dispatch_resume163
3.2.11 Dispatch Semaphore164
3.2.12 dispatch_once166
3.2.13 Dispatch I/O167
3.3 GCD实现169
3.3.1 Dispatch Queue169
3.3.2 Dispatch Source171
附录A ARC、Blocks、GCD使用范例176
附录B 参考资料182
文章试读:1.2.1 概要 Objective-C 中的内存管理,也就是引用计数。可以用开关房间的灯为例来说明引用计数的机制,如图1-1 所示。 解决这一问题的办法是使办公室在还有至少1 人的情况下保持开灯状态,而在无人时保持关灯状态。 (1)最早进入办公室的人开灯。 (2)之后进入办公室的人,需要照明。 (3)下班离开办公室的人,不需要照明。 (4)最后离开办公室的人关灯(此时已无人需要照...
(查看全部试读)