【发布时间】:2011-10-07 21:34:11
【问题描述】:
我一直在考虑让我的代码少一些错误。在清理其他程序员的代码时,我已经多次看到这种情况,我想知道我的假设是否正确,即多线程环境中的调用不安全:
self.prop1 = [[[SomeClass alloc] init] autorelease];
我的想法是,如果在应用程序完成该函数之前,另一个线程干预并释放 prop1,那么在下一次 runLoop 时,如果 prop1 没有被另一个设置为 nil,则初始化的指针可能会再次释放线程。
Timeline:
*-----------------**-----------*
| | |
| | Thread 1 autoreleases prop1 when done with function
| |
| Thread 2 releases prop1
|
Thread 1 calls the above code and doesn't finish the function
我希望这对某人有意义,他们可以澄清或减轻我的担忧。
【问题讨论】:
-
"autorelease" 实际上并没有释放一个对象,它只是告诉引用计数系统在以后的某个时间点减少该对象的引用计数。
标签: objective-c ios properties release autorelease