私はObjective-cが初めてです。Web サービスに非同期でアクセスし、結果を処理するコードを数行書きました。非同期メソッドがデリゲート (プロトコル) を引数として取る場合の ARC の動作について説明していただけますか?
たとえばNSURLConnection
、メソッドでローカルを使用して Web サービスを呼び出しています。
-(void) invokeSomeWebServiceMethod {
MyDelegate *const theDelegate = ...;
NSURL *const url = ...;
NSURLRequest *const request = ...;
[NSURLConnection connectionWithReuqest: request delegate:theDelegate];
}
呼び出し元のメソッドもデリゲートもそれへの参照を持たないためNSURLConnection
、メッセージの結果として返される暗黙的なものはクリーンアップ用にマークする必要があるため、このアプローチが機能するかどうかはわかりませんでした。connectionWithRequest
しかし、それはうまくいきます!
そう:
- ランタイムは、作業を行っているものを時期尚早に消去しないことをどのように認識しています
NSURLConnection
か? connectionDidFinishLoading
リスト項目メッセージが受信されたら、デリゲートで接続を解放/閉じる必要があり ますか?- デリゲートが を宣言してメッセージの一部として
invokeSomeWebServiceMethod
渡す方が理にかなっていますか? 次に、の作成がデリゲート内にカプセル化されます。self
connectionWithRequest
NSURLConnection
ありがとう