我試圖從我的項目中消除內存泄漏,但我堅持在2天的情況下現在。xcode項目 - 內存泄漏
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if (currentElement) {
[currentElement release];
currentElement = nil;
}
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init]; //leak #1
// DOING OTHER STUFF....
//......................
}
}
/*****************************************************************************/
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]){
[item setObject:currentTitle forKey:@"title"]; // leak #2
[item setObject:currentLink forKey:@"link"]; //leak #3
[bucket addObject:[item copy]]; // NSMutableArray *bucket
}
}
對於泄漏#1,我試圖釋放內存分配前的項目,但如果我做應用程序崩潰。 (我的意思是,就在item = [[NSMutableDictionary alloc] init];
我用
if (item){
[item release];
item=nil;
}
在我的dealloc()方法,我也有[item release];
泄漏#2,#3我不知道發生了什麼事 注:2方法是通過一個XML解析器稱爲在解析XML文件,每一個元素read.That就是的NSMutableDictionary *項目被重新用於每個元素的時間。
有什麼建議?謝謝你在前進:)
首先感謝您的回覆。 我已經嘗試autorelease-ing項目,但仍然泄漏。 使用構建和分析顯示一切正常... – CrisDeBlonde 2011-03-01 15:43:24
我認爲你的支票壞了。嘗試檢查'item!= nil',而不是'if(item)'。 – Moshe 2011-03-01 16:21:13
你可能沒有直接給我解決方案,但你迫使我使用NSZombie。那讓我看到了路!謝謝:) – CrisDeBlonde 2011-03-01 16:23:39