【发布时间】:2015-09-26 17:26:07
【问题描述】:
dealloc 是否保证在创建NSObject 实例的同一线程上被调用?例如,如果我在主线程上调用[[MyFluffyBunny alloc] init],是否保证dealloc也能在主线程上被调用,或者一旦MyFluffyBunny不再保留,是否可以在任何线程上调用它?
我在我的应用程序中看到零星的崩溃,这表明它无法保证,但我无法找到任何确认它的文档。
【问题讨论】:
-
出于好奇,这有什么关系?
-
我必须调用需要在主线程(第 3 方 API)上执行的 dealloc 中的某些代码。在添加线程检查和 dispatch_sync 调用之前,我想确定上述内容
-
何必担心呢?使用
dspatch_sync并确保它无论如何都能正常工作。它已经在主线程上,它基本上是一个空操作。 -
dispatch_sync的文档说,如果在传递的同一队列上使用它会导致死锁。我并不太担心,我只是想先确定一下。 -
或者直接使用
dispatch_async...
标签: objective-c