最近幾個小時,我一直生活在儀器上,盯着一個令人費解的內存泄漏。我已經將它隔離到NSOperation子類中的這一行代碼中,我寫道:initWithContentsOfURL泄漏NSOperation子類中的內存。任何人看到這個?
NSData *myData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:myURLString]];
定期地這會泄漏3500字節。有沒有人看到這個?如果是這樣,是否有解決方法?
在此先感謝。
UPDATE:
這裏是我的代碼子類的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都有適當的內存管理。
-Doug
定義,我們看到更多的代碼,就知道什麼有用的東西泄漏。你怎麼清理?如果你不是,那就是那裏的問題! –
哎呦。我只是添加了所有相關的代碼。 – dugla
你用NSZombieEnabled在樂器中運行這個嗎?這可能導致虛假的「泄漏」出現。 – nall