过去几个小时我一直在 Instruments 上生活,盯着一个令人费解的内存泄漏。我已将其隔离到我编写的 NSOperation 子类中的这一行代码中:
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 已正确释放。此外,我已经确认这个子类(染色体等)的所有 ivars 都得到了适当的内存管理。
-道格