iOS并发编程——多线程

2015-03-18  本文已影响157人  666真666

1. GCD(Grand Central Dispatch)

各种线程

2.Operation Queues

另外,你也可以将 block 添加到操作队列中。这有时候会非常的方便,比如你希望在主队列中调度一个一次性任务:

    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        // 代码...
    }];

Run Loops

一个 run loop 总是绑定到某个特定的线程中。main run loop 是与主线程相关的,在每一个 Cocoa 和 CocoaTouch 程序中,这个 main run loop 都扮演了一个核心角色,它负责处理 UI 事件、计时器,以及其它内核相关事件。无论你什么时候设置计时器、使用 NSURLConnection 或者调用 performSelector:withObject:afterDelay:,其实背后都是 run loop 在处理这些异步任务。

run loop 可以运行在不同的模式中,每种模式都定义了一组事件,供 run loop 做出响应,不同模式下,执行不同的事件。关于这点,在 iOS 中非常典型的一个示例就是滚动。在进行滚动时,run loop 并不是运行在默认模式中的,因此, run loop 此时并不会响应比如滚动前设置的计时器。一旦滚动停止了,run loop 会回到默认模式,并执行添加到队列中的相关事件。如果在滚动时,希望计时器能被触发,需要将其设为 NSRunLoopCommonModes 的模式,并添加到 run loop 中。

上一篇 下一篇

猜你喜欢

热点阅读