2

过去几个小时我一直在 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 都得到了适当的内存管理。

-道格

4

1 回答 1

0

你必须释放或自动释放 myData,否则它会根据Cocoa 内存管理规则泄漏

于 2009-12-03T03:03:27.147 回答