我已經看了一下,但一直無法找到這個問題的明確答案。Objective-c異步內存管理
如果我有一個類執行異步操作,何時以及如何釋放它?
-(void)main
{
AsyncObject *async = [[AsyncObject alloc] initWithDelegate:self];
[async goDoSomething];
}
-(void)didSomething:(Result*)result
{
}
何時發佈* async?
要小心。在這種情況下,您正在泄漏異步,因爲您(1)分配它,然後(2)保留它。你只發布一次。 – csano
那麼不,調用者仍然負責通過自己的機制釋放它或調用autorelease。在內部,我碰到在每個異步操作的開始/結束時刪除保留。它純粹是爲了確保異步操作不會中途失敗,並將其與應用程序一起使用。它還爲調用者釋放它提供了一種便捷的方式(因爲autorelease現在具有所需的效果)。編輯:對不起,我看到我錯過了我的示例autorelease。已添加它。 – Tyler