私はiPhoneの目標C開発の新人です。次の方法を実行するとメモリリークが発生します。iphone NSSearchPathForDirectoriesInDomainsメモリリーク?
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"dbname.sqlite"];
}
と私はちょうど、以下にそれをダウントリムあれば...それはまだ
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
return nil;
}
ので、私はまだメモリリーク以下、と変数のパスを解放しようとしたがリークすることを見出しました。
- (NSString *) getDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
[paths release];
return nil;
}
リークを検出するために、私は次のループでプロファイラでそれを実行しています:
for (int iLoop = 0; iLoop < 30; iLoop++) {
NSString *dbPath = [self getDBPath];
[dbPath release];
sleep(1);
}
NSPathStore2とNSArrayMに関連付けられたメモリの量は増え続けています。
I間違っているかもしれないもの上の任意の提案?感謝! ありがとう!
漏れを表示していますか?あなたが持っている最初の方法は、完全に合理的で、正確に何をすべきかです。 –
これをプロファイラでループ内で実行します。上記のオリジナルの質問をループの詳細で更新しました。 –
NSZombieEnabledはまだアクティブですか?これはバックグラウンドで実行されるため、NSAutoReleasePoolはありませんか? –