私はカスタムLocationDetailオブジェクトで満たすNSMutableArray * cityDataを持っています。 cityDataはviewDidLoadで作成され、deallocで解放されます。コード内 どこか、ユーザーアクションに基づいて、私はLocationDetailを移入し、cityData配列に追加します。NSStringでのメモリ管理の問題
LocationDetail* d = [[LocationDetail alloc] init];
d.city = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 1)];
d.tz = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 3)];
d.country = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 2)];
d._id = [NSString stringWithFormat:@"%S", (char*)sqlite3_column_text16(statement, 0)];
[cityData addObject:d];
[d release];
私はビューコントローラを終了し、それを削除しています、リークユーティリティは、私は、コードのリークを持っていると言います上記の[NSString stringWithFormat]を使用して、4行すべてのNSCFStringの上に追加します。
私はsqlite3のものを削除しようとしたと同じ結果と
d._id = [NSString stringWithFormat:@"%s", "a string"]
のようなものへの呼び出しを簡素化。しかし、NSStringのstringWithFormatを次のように置き換えた場合、
d._id = @"a string";
漏れがなくなります。なぜ私はstringWithFormatを使用するとリークがあるのだろうと思っていますが、@ "何か"を使っているのではないのです。私が間違っていることが明らかなことはありますか?
ありがとうございます!
LocationDetailの各 '@プロパティ'( 'city'、' tz'、 'country'と' _id')をどのように定義したかを示します –
LocationDetailのプロパティはすべてNSStrings *であり、@property非構造体、保持)NSString * _id; – MirekE
@interface LocationDetail:NSObject { NSString * city; NSString * tz; NSString *国; \t NSString * _id; } @property(nonatomic、retain)NSString * city; @property(非構造、保持)NSString * tz; @property(nonatomic、retain)NSString *国; @property(nonatomic、retain)NSString * _id; @end – MirekE