构建如此一个 operation, 需要
构建如此一个 operation, 需要一个或多个 block, 即一个 NSBlockOperation
对象,其中包含一个或多个 block 对象
当一个 NSBlockOperation
对象中包含多个 block 对象时,这若干个 block 会使用「组原语」(group semantic)进行修饰,这会使得
NSBlockOperation
才算是完成所有的 NSOperation
对象都支持一下特性
执行一个 operation 可以有两种操作
start
方法对于手动调用 start
方法这种方式,是不保证 operations 会与同一线程中的其他代码实现并行执行。其中 isConcurrent
方法可以查看 operations 是否为并行执行。默认为 NO
, 这意味着这个 operation 在当前线程是以同步的方式执行
大多数情况下,开发者都不需要自己构建 concurrent operations
只要我们记得将 operations 添加到某个 operation queue 中的话,operations 就会以异步方式执行
当一个非并行的(nonconcurrent) operation 添加到某个 operation queue 时,这个 operation queue 实际上会使用另外一个线程来执行这个 operation, 所以最后还是异步执行
只有在需要异步执行一个 operation, 而又没有将它添加到任何一个 operation queue 时,才需要自己构建一个 concurrent operation