0

iOS開発者の初心者として。私は自分のプロジェクトでARCを使用しています。また、ASIHttpRequestを使用して、作業を簡単にします。ご存知のように、ASIHttpRequestはARCをサポートしていません。-fno-objc-arcコンパイラフラグを追加して機能させました。さて、ここに私の質問があります。私のコードの一部が次のようになっている場合、どうすれば'request'オブジェクトを解放できますか?

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
   __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
   [request setCompletionBlock:^{
      NSData *responseData = [request responseData];
   }];
   [request setFailedBlock:^{
      NSError *error = [request error];
   }];
   [request startAsynchronous];
4

2 に答える 2

1

ARCコードと非ARCコードを混在させる場合、コンパイラはNSObjectsで正しいことを行うというのが私の理解です。

Cocoaメソッドの命名規則に基づいて、responseDataは非所有参照である必要があります。したがって、あなたはそれを保持/解放する責任を負わないはずです。リクエストオブジェクトがそれを所有しています。

于 2012-04-23T01:48:56.160 に答える
0

これらのコードはARCを使用してファイルに含まれているため、この「要求」を解放する必要はありません。コンパイラは、リリースメソッドを挿入するのに役立ちます。ただし、ASIHTTPRequest.mファイル内のオブジェクトの場合、-fno-objc-arcコンパイラフラグを追加しているため、オブジェクトを解放する必要があります(実際には、解放する必要はありません)。コンパイラは解放メソッドを挿入しません。

于 2012-04-23T05:17:32.440 に答える