2011-08-17 4 views
2

私は既に投稿された質問をブラウズしていましたが、私が試してみたいヒントがたくさんありました。残念ながら私は問題を解決しません。NSDateがメモリリークを作成する

私は単純に次のコードを持っている:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
NSDate *date = [[NSDate alloc] init]; 
self.timestamp = date; 
[date release]; 

[pool release]; 

をしかし、まだNSDateの割り当てラインでメモリリークがあります。私はAutoreleasePoolなしで試して、私はプールのリリースの代わりにドレインを使用しようと、私は静的なNSDate日付メソッドを使用しようとした。しかし、私はメモリリークを取り除くことはありません。

私はまだそれを取得しません。どんな助けも高く評価されます。

答えて

1

のみ

self.timestamp = [NSDate date]; 

代わりに、所与のコード・ブロックの書き込み、それがリークすることなく動作します。

+0

残念ながら、これはうまくいきません。メモリリークのコードをプロファイリングするとき、私はまだラインで100.0%を取得します。 –

+0

あなたのクラスにタイムスタンプ・プロパティーはどのように設定されていますか? – Daniel

+0

@Peter Osburg、タイムスタンプのデータ型クラスは何ですか? – Tirth

1

があなたのdealloc実装で[timestamp release]のですか? IE:

-(void)dealloc { 
    // ... your other retained property/ivar releases ... // 
    [timestamp release]; 
    [super dealloc]; 
} 

あなたは、標準のiOSプロジェクトで実行している場合も、あなたは(あなたがタイトなループやスレッドの実装でもない限り)あなた自身のNSAutoreleasePoolを設定する必要はありません。

+0

はいです。そして私がプロファイリングを行うとき、私は日付の初期化時にメモリリークを見る。それが私が非常に混乱している理由です。それはSDKの問題かもしれませんか? –

+0

リークされたオブジェクトがどこに割り当てられているので、リークがそこに表示されると思います。それはあなたが何か違うことをする必要がある場所ではありません。 –

+0

'timestamp' ivarに直接何かを割り当てていますか? 'timestamp = [NSDate someKindOfNSDate];の行に沿ったものは、' [timestamp release]; 'が先行しないので、あなたのallocをトレースするリークを引き起こす可能性があります。 –

関連する問題