iphone - 引用 NSOperation 实例并调用 -isFinished 是否安全?

标签 iphone ios ipad nsoperation nsoperationqueue

每次我的应用程序启动或退出事件时,我都会创建一个 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/

相关文章:

iphone - 使用新的显式应用程序 ID、应用程序内购买更新了应用程序。 SKProductsRequest 返回空的产品列表

iPhone确实收到内存警告策略

ios - 在 iOS 8 中,Tabbar 的 View Controller 在更改方向时重新加载

iphone - UIGraphicsBeginImageContext 线程安全吗?

c# - Microsoft.ML 和 Xamarin

ios - 如何在应用程序中禁用 Apple Watch 自动休眠?

ios - 如何在 sencha touch 中从 css 文件获取最高值到 .js Controller ?

ios - 自定义模式演示中的 UIBlurEffect

ios - 有没有更好的代码,所以我们不能使用通用应用程序的条件

iphone - NSString 子串不会比较