Grand Central Dispatch、后台处理与应用状态管理
1. Grand Central Dispatch 基础
1.1 __block 变量的使用
在代码编写中,使用 __block 定义变量非常实用。当使用 __block 定义一个变量时,该变量可直接在同一作用域内定义的所有代码块中使用。而且,使用 __block 修饰的变量在代码块内部使用时,不会被复制或保留。
1.2 主线程的重要性
在项目开发中,需要注意 UIKit 的线程安全问题。从后台线程向任何 GUI 对象(如 resultsTextView )发送消息是不允许的。不过,GCD 提供了解决办法。在代码块内部,可以调用另一个调度函数,将工作交回主线程。通过再次调用 dispatch_async() 函数,并传入 dispatch_get_main_queue() 函数返回的队列,就能得到主线程上的特殊队列,用于执行需要使用主线程的代码块。
以下是修改后的 doWork: 方法示例:
- (IBAction)doWork:(id)sender {
NSDate *startTime = [NSDate date];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSString *fet
超级会员免费看
订阅专栏 解锁全文
32

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



