2011-11-29 1 views
5

TWRequestを使用しているときにInstruments(Leaks)がメモリリークを報告しています。ここで 非ARCプロジェクトで使用すると、TWRequestが漏れて表示される

は、問題を再現する手順は、次のとおりです

(ARC無効)、(例えばのviewDidLoadで)コードに次の行をTwitterのフレームワークを追加し、追加した新しいXcodeプロジェクトを作成します。

TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"] parameters:nil requestMethod:TWRequestMethodGET]; 

[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
    NSLog(@"in performrequest"); 

    [postRequest release]; 
}]; 

インスツルメンツ(リーク)でこのコードをプロファイリングした後、「performRequestWithHandler」とのラインが漏れていることを私に言っています:

Instruments screenshot

Marked line

このリークを防止するために何をすべきですか?

私は同様の質問hereを見つけましたが、私が説明している問題とは無関係のようです。

答えて

2

楽器がこれをリークとして選択する理由はわかりませんが、完了ブロックの外でリクエストを解放することはできます。要求が開始されると、完了ブロックが実行されるまで接続によって保持されます。これは、同様にリークを排除した場合、私は驚かないだろう

TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"] parameters:nil requestMethod:TWRequestMethodGET]; 

[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
    NSLog(@"in performrequest"); 
}]; 

[postRequest release]; 

:にあなたのコードを変更します。

関連する問題