私はなぜこれが漏れているのか把握しようとしている私の髪を引き出している。私の.hファイルでは、NSMutableArrayを保持し、非構造の合成プロパティを持っています。私のviewDidLoadでは、私のようにそれを宣言:私のアプリケーションを通してNSMutableArrayのリーク
self.tableData = [[NSMutableArray alloc] init];
[self.tableData removeAllObjects];
fillData(self.tableData);
、私は[self.tableData removeAllObjects]呼び出し、fillData(self.tableData)関数でそれを再作成します。
私はボールをドロップしなかった[self.tableData removeAllObjects], [self.tableData release], tableData = nil;
:私は私のdeallocメソッドで
void fillData(NSMutableArray* list)
{
for (set<string>::const_iterator itr = sortedData.begin(); itr != sortedData.end(); ++itr){
[list addObject:[NSString stringWithFormat:@"%s", ((string)*itr).c_str()]];
}
}
:この関数は、静的なC++文字列セットからデータをいっぱいになりますか? Instrumentsはそれが[list addObject ....]行にあると言っています。
おかげ
あなたの '((string)* itr).c_str()'呼び出しは、オートリリースされていない文字列を返しますか? –
はい、それは自動的に解放されるNSStringにコピーされます。だから私はこれがどうやってリークを引き起こしているのか分かりません。代わりにそのNSStringを割り当てる/ autoreleaseする必要がありますか? – Alede
よく見えます。行を2つに分割し、 'const char * s =(* itr).c_str();に分割するとどうなりますか? [リストaddObject:[NSString stringWithUTF8String:s]; '? – Yuji