このコードでエラーを見つけることができません:
-(void)downloadImageFromURL:(NSURL*)url withCompletionBlock:(RSSMessageImageDownloadCompletionBlock)completionBlock
{
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
__block RSSMessage *_self = self;
request.completionBlock =
^{
__block NSData *responseData = request.responseData;
dispatch_async( dispatch_get_main_queue(), ^{
_self.image = responseData;
[[[UIApplication sharedApplication] delegate] saveContext];
if(completionBlock != nil)
{
completionBlock();
}
});
};
[request startAsynchronous];
}
このフォームでは、インストゥルメントからメモリ リークが発生しています。以前に __block キーワードがなかったことが原因であると想定していました。 ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
しかし、このキーワードを上記の行に追加すると、次のようなエラーが発生します。
* -[NSConcreteMutableData isNSData__]: 割り当て解除されたインスタンス 0xdeab380 に送信されたメッセージ
リクエスト データを保持し、メモリ リークを防ぐ方法がわかりません。