私は見てきましたが、この質問に対する決定的な答えを見つけることができませんでした。Objective-c非同期メモリ管理
私は非同期操作を実行するクラスを持っている場合、いつどのように解放するのですか?
-(void)main
{
AsyncObject *async = [[AsyncObject alloc] initWithDelegate:self];
[async goDoSomething];
}
-(void)didSomething:(Result*)result
{
}
いつ* asyncをリリースしますか?
注意してください。この場合、あなたは(1)それを割り当ててから、(2)それを保持しているので、非同期でリークしています。あなたは一度だけそれをリリースしています。 – csano
さて、いいえ、呼び出し元は、それ自身のメカニズムで解放するか、autoreleaseを呼び出す責任があります。内部的には、各非同期操作の開始時と終了時に保持を破棄しています。純粋に、非同期操作が途中で失敗してアプリケーションを実行しないようにするためです。また、発信者がそれを解放するための便利な方法も提供します(autoreleaseには今のところ効果があります)。編集:申し訳ありません私は私のサンプルでオートリリースを見逃しています。それを追加しました。 – Tyler