NSURLConnectionを使用する場合、インスタンス化されるメソッドの最後で解放できますか?
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
...
...
[connection release];
次に、非同期プロセスを続行しますか、それとも保持する必要がありますか?
NSURLConnectionを使用する場合、インスタンス化されるメソッドの最後で解放できますか?
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
...
...
[connection release];
次に、非同期プロセスを続行しますか、それとも保持する必要がありますか?
完了したら、接続オブジェクトを解放する必要があります。
NSURLConnection
デリゲートメソッドでこれを解放します-
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
「割り当て」によって接続を保持する必要があります。理由は次のとおりです。接続を管理する必要があります。たとえば、接続をキャンセルします。
可能な限り、便利なアロケータを使用するようにアドバイスします。返されるオブジェクトは自動リリースされます。つまり、手動でリリースしたり保持したりすることを心配する必要はありません。経験則以上で質問に答えるには、次を使用します。
connectionWithRequest:delegate:
そして、あなたは行ってもいいです。
最良の方法は、connectionWithRequest:Delegate:を使用して、自動解放されるようにすることです。
ただし、デリゲートをゼロにする機会を得るには、接続が終了するまでNSURLConnectionへのポインタを保持する必要もあります。そうしないと、接続が戻らないが、接続によって呼び出される前にデリゲートの割り当てが解除された場合、クラッシュします。(エラーが発生します:割り当て解除されたインスタンスにメッセージが送信されました)
したがって、NSURLConnectionへのポインターを保持し、接続が戻ったときにポインターをnilに設定するのが最善です。したがって、ConnectionDidFinishLoadingで
connection = nil;
これで、デリゲートの割り当てが解除された場合、deallocメソッドに何かを入れるか、デリゲートがviewControllerの場合はviewDidUnloadに入れることができます。
if (connection != nil) connection.delegate = nil;