我一直在考慮讓我的代碼少一些車。清理時,其他程序員的代碼,我想知道如果我在我的假設是正確的我見過很多次,在多線程環境中的呼叫是不是安全:財產分配緊隨着autorelease
self.prop1 = [[[SomeClass alloc] init] autorelease];
我的想法是,如果申請前用另一個線程干預並釋放prop1,然後在下一次runLoop時,如果prop1沒有被另一個線程設置爲nil,init'd指針可能會再次被釋放。
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
我希望這對某人有意義,他們可以澄清或減輕我的擔憂。
「自動釋放」實際上並沒有釋放對象,它只是告訴引用計數系統在稍後的某個時間點減少該對象的引用計數。 – JAB