2009-08-06 10 views
1

私はこのiPhone 3.0 SDKコードで計測器メモリリークを取得しています。私はここでhttp://code.google.com/p/json-framework/iPhoneのメモリリークJSONライブラリ

からJSONを使用してい

が私のコードです:

// .h 
@property (nontatomic,retain) NSMutableArray *tweets; 


// .m 
import" JSON.h" 
@synthesize tweets; 
... 
    tweets = [[NSMutableArray alloc] init]; 

    NSURL *url = [NSURL URLWithString:@"http://www.someurl.com"]; 
    NSString *jsonString = [NSString stringWithContentsOfURL:url]; 
    NSArray *results = [jsonString JSONValue]; 
    NSArray *data = [results valueForKey:@"stories"]; 

    for(NSDictionary *tweet in data) { 
     TweetmemeData *tweetmeme = [[TweetmemeData alloc] initWithTweet:tweet]; 
     [tweets addObject:tweetmeme]; 
     [self debugDump:tweetmeme]; 
     [tweetmeme release]; 
    } 
    [results release]; 

    return tweets; 

可能な場合は、メモリ管理のこのフォームについての詳細を説明してください。私は保持/解放に非常に精通していますが、明らかに実装に問題があります。

ありがとう!

+0

NSArray *データを公開していないことに注意してください...ロックアップを取得すると、また、もし私がRETAIN結果を返すと助けてくれたようです...事前に感謝 –

+0

[jsonString JSONValue]には "alloc"、 "new"、 "copy"という単語は含まれていないので、おそらく自動解放されたポインタつまり、結果配列を解放する必要はありません。同じことが "データ" NSArrayにも当てはまります。 –

+0

'つぶやき'はおそらく自動リリースされるはずです。あなたはそれを初期化してからメソッドの最後に戻します。 また、 'tweets'がプロパティの場合は、tweetの代わりにself.tweetsを使用して、init'dのときにプロパティ宣言ごとに保持されるようにします。 すべてのコードがなくても、あなたが示したことから、物事は不均衡に見えます。 – Hunter

答えて

1

シミュレータでは多くのリークがハードウェア上で発生することはまったくないことに注意してください。あなたはシミュレータを使用しているのか、電話でテストしていますか?

+0

こんにちは!情報をありがとう。私はシミュレータを使用して..デバイスをチェックします。 NSArray *データを公開していないことに注目してください...ロックアップを取得するとまた、もし結果が残っていると助けているようです... ありがとうございました –

+0

メモリ管理については、アップルの公式ガイドhttp://developer.apple.com/iPhone/library/documentation/Cocoa/を読んでください。 Conceptual/MemoryMgmt/MemoryMgmt.htmlと私が見つけた別のかなり良い記事です:http://akosma.com/2009/01/28/10-iphone-memory-management-tips/ – Sneakyness