我已经完成了一项任务,即清理刚刚转换为Swift 3的项目上的一些现有Swift代码。但是,我一直看到这看起来对我来说很可疑。NSOperationQueues在释放之前是否总是完成队列?
OperationQueue().addOperation(someOperation)
这里有顾虑/问题,我有...
- 创建和使用权存在的队列实例。没有参考它被存储在其他地方使用。
- 由于上述原因,队列中只会有一个操作,所以为什么要使用队列呢?
- 由于没有人持有对队列的引用,因此在ARC下不应该立即释放它,如果是这样,现在正在执行的操作本身会发生什么?它会被中断,中止还是仍然完成?
无论如何,我想知道如果我失去了一些东西还是我不知道NSOperationQueue和NSOperations,使这个代码是有意义的“功能”的。任何人都可以阐明这一点,或者你认为这是不好的做法吗?
关于我的观点2,我意识到错误,只要我发布它,但遇到了一个会议。现在更正它... – MarqueIV
队列的目的是进入后台线程 - 正如我所说的,在正常情况下,我会直接使用GCD。但是,正如我所说,NSOperation可以让你做一些你不能单独使用GCD的事情,在这种情况下,我可能会使用像这样的模式。同样要记住,GCD是相对较新的,而NSOperation的历史要长得多,所以这种模式可能会从暗淡的过去(只是猜测)中发展而来。 – matt