是否保证在创建对象的同一线程上调用dealloc?

Cla*_*sen 7 objective-c

dealloc保证创建一个在同一线程上被称为NSObject实例?例如,如果我调用[[MyFluffyBunny alloc] init]主线程,dealloc保证也可以在主线程上调用,或者可以在任何线程上调用一次MyFluffyBunny不再保留?

我看到我的应用程序中的零星崩溃表明它无法保证,但我一直无法找到任何确认它的文档.

Ken*_*ses 12

该对象在任何线程释放最后一个强引用时都会被释放.也就是说,无论什么线程调用-release最后时间.实际上,-release调用期间,对象被释放.

用于文档的-release方法NSObject协议说:

减少接收者的参考计数.... dealloc当参考计数达到0时,接收器会发送一条消息.

"高级内存管理编程指南:实用内存管理"一文中包含了不用于-dealloc管理稀缺资源原因:

  1. 在错误的线程上执行清理逻辑.

    如果一个对象在意外的时间自动释放,它将在它碰巧进入的任何线程的自动释放池块中被释放.对于只能从一个线程触及的资源来说,这很容易致命.