私は不可解なメモリリークを見つめながら、ここ数時間Instrumentsに住んでいます。私が書いた NSOperation サブクラスのこの 1 行のコードにそれを分離しました。
NSData *myData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:myURLString]];
これにより、定期的に 3500 バイトがリークされます。他の誰かがこれを見ていますか?もしそうなら、回避策はありますか?
前もって感謝します。
アップデート:
これは、私の NSOperation サブクラスの main() 本体内のコードの関連セクションです。
- (void)main {
// ...
NSData *sequenceData =
[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:concatenatedURLString]];
NSString *sequenceString =
[[NSString alloc] initWithBytes:[sequenceData bytes] length:[sequenceData length] encoding:NSUTF8StringEncoding];
NSDictionary *result = [NSDictionary dictionaryWithObjectsAndKeys:
self.chromosome, @"chromosome",
[NSNumber numberWithInt:self.basepairStart], @"basepairStart",
[NSNumber numberWithInt:self.basepairEnd], @"basepairEnd",
sequenceData, @"sequenceData",
sequenceString, @"sequenceString",
nil];
[sequenceData release];
[sequenceString release];
[self.target performSelectorOnMainThread:self.action withObject:result waitUntilDone:NO];
}
ご覧のとおり、sequenceData と sequenceString は適切に解放されています。また、このサブクラスのすべての ivar (染色体など) が適切にメモリ管理されていることを確認しました。
-ダグ