请考虑以下事项:
{{1}}
在一个多线程的情况下......如何在dealloc获取锁定时阻止foo.doSomething被调用?
我认为我看到的顺序是:
因为看起来很平常,bar对它的委托有一个弱引用(并且bar是一个外来类BTW,所以我无法改变这个)似乎不可能安全地释放foo的一个实例当酒吧可以随时打电话给它的代表。
我很欣赏这里的一些见解,这一定是一个标准问题,但我在这里或其他地方都没有看到过很多关于它的讨论。
答案 0 :(得分:0)
使用KVO或来自多个线程的通知时,存在类似的模式和问题。看起来每个对象的串行队列可以比synchronized
更好地控制它。
您可以使用NSOperationQueue
创建一个maxConcurrentOperationCount
。这提供了同步。 dealloc
可以通过暂停队列和取消等待任务来防止在其后面等待任务的问题。