ami*_*mit 6 nsoperation nsoperationqueue ios
因为NSOperationQueue总是在新线程上运行任务,所以我对运行isConcurrent时的角色感到困惑.NSOperationNSOperationQueue
如果我有两个子类NSOperation,都运行一个异步过程,无论是从推出NSOperationQueue并在这两个我重写isCancelled,isExecuting,isFinished和isReady.如果在一个我覆盖isConcurrent总是return YES和另一个总是如此,将会有什么不同return NO.
谁真的打电话isConcurrent?如何逻辑的变化,如果它是NO或YES.
这是一种遗留方法,在OS X v10.6之前和iOS 4之前使用,即在引入GCD进行NSOperationQueue调度之前使用.
来自doc
操作队列通常提供用于运行其操作的线程.在OS X v10.6及更高版本中,操作队列使用
libdispatch库(也称为Grand Central Dispatch)来启动其操作的执行.因此,无论是将它们指定为并发还是非并发操作,操作始终在单独的线程上执行.但是,在OS X v10.5中,只有在isConcurrent方法返回时,才会在单独的线程上执行操作NO.如果该方法返回YES,则操作对象应该创建自己的线程(或者启动一些异步操作); 队列没有为它提供线程.
如果您运行的是OS X> = 10.6或iOS> = 4,则可以放心地忽略它.
作为对这一事实的证实,来自博士 isConcurrent
在OS X v10.6及更高版本中,操作队列忽略此方法返回的值,并始终在单独的线程上启动操作.
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |