Iphone 了解目标C/泄漏的参考计数
我是iPhone编程新手。我写了一个小程序。应用程序的部分在模拟器中运行良好。我不明白以下几点: 分析仪与代码不一致。“该方法返回一个Objective-C对象,其保留计数为+1(拥有引用)”,他说 有人帮我吗 谢谢Iphone 了解目标C/泄漏的参考计数,iphone,objective-c,Iphone,Objective C,我是iPhone编程新手。我写了一个小程序。应用程序的部分在模拟器中运行良好。我不明白以下几点: 分析仪与代码不一致。“该方法返回一个Objective-C对象,其保留计数为+1(拥有引用)”,他说 有人帮我吗 谢谢 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qN
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"item"]) {
[item setObject:currentTitle forKey:@"name"];
[item setObject:currentAutor forKey:@"descr"];
[item setObject:currentContact forKey:@"contact"];
[rssArray addObject:[item copy]];
NSLog(@"Nachricht: %@", currentTitle);
[item release];
}
[rssArray release];
}
[rssArray addObject:[项目副本]]代码>
此行产生内存泄漏,因为rssArray将retain发送给[item copy],而[item copy]创建了新对象,所以对象[item copy]的retainCount=2,但只释放一次。
您应该使用[[item copy]autorelease],或者将[item copy]分配给临时变量,并在将其添加到数组中后将其释放。Nickolay是正确的。这完全取决于您的程序,但可能您甚至不需要深度副本([rssArray addObject:[item copy]];)大多数情况下,浅层副本就足够了([rssArray addObject:item];)