1

メモリ管理は手動で行われており、このプロジェクトでは ARC は使用されていません。

メッセージ オブジェクトは を使用alloc initして作成され、以下のコードはバックグラウンド スレッドで呼び出されています。

次の呼び出しの前にメッセージ オブジェクトを渡します。

 [self performSelectorOnMainThread:@selector(serverConnectionResult:) withObject: message waitUntilDone:NO];  

電話の後、私はやりたい:

 [message release];

serverConnectionResultが呼び出されたときにメッセージオブジェクトが常に有効になるかどうかが心配なので、これを行うべきかどうか混乱していますか? メソッド呼び出しperformSelectorOnMainThreadはメッセージ オブジェクト自体を保持していますか? 呼び出されたメソッドが渡されたオブジェクトを保持していることを知るためのルールは何ですか?

4

2 に答える 2

2

これは安全です。-performSelectorOnMainThread:withObject:waitUntilDone:メッセージのターゲットとオブジェクトの両方を保持します。同様-performSelector:withObject:afterDelay:に、ターゲットとオブジェクトも保持されます。

于 2013-04-24T00:46:33.463 に答える
0

また、Grand Central Dispatch を使用dispatch_asyncしてメイン スレッドで使用し、メソッドを呼び出すブロックを渡し、その後メッセージを解放することもできます。

于 2013-04-24T01:17:29.450 に答える