每次我的应用程序启动或退出事件时,我都会创建一个 NSOperation。我需要使用依赖项将它们排入队列,以便两个永远不会同时执行,而是一个接一个地执行。
这样做安全吗?
- 在 App Delegate 中持有对 NSOperation 对象的强引用。
- 当应用退出事件状态时,只需检查 hat 属性是否不为 nil。
- 如果不为nil,检查当前的NSOperation
-isFinished
。 - 如果完成,只需将新的添加到队列中即可。
- 如果还没有完成,创建新的并设置对运行的依赖,然后将其添加到队列中。
我有点担心这里的多线程问题。 -isFinished 或 -addDependency: 方法的文档并未说明不应从主线程调用它们。所以我想这样做是可以的。
编辑:NSOperation 在后台执行一些文件系统操作。
最佳答案
如果您想确保它们不会同时被调用,请将 NSOperationQueue 上的 maximumConcurrentOperationCount: 设置为 1。
- (void)setMaxConcurrentOperationCount:(NSInteger)count
这假设您将两个 NSOperations 放在同一个队列中。
回答您的其他问题。我不确定你在做什么——但是是的,如果你愿意,你可以在 AppDelegate 上强烈引用你的 NSOperation,你可以检查 isFinished
关于iphone - 引用 NSOperation 实例并调用 -isFinished 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7486334/