了解Objective C / Leak的引用计数

时间:2011-01-11 14:21:18

标签: iphone objective-c

我是iPhone新手编程的新手。我写了一个小应用程序。应用程序的一部分在模拟器中正常运行。我不明白以下几点:

分析师不同意该代码。 “方法返回一个具有+1保留计数的Objective-C对象(拥有引用)”他说。

有人帮助我。

...谢谢

- (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];
}

1 个答案:

答案 0 :(得分:11)

[rssArray addObject:[item copy]];

此行产生内存泄漏,因为rssArray将retain发送到[item copy],而[item copy]创建新对象,object [item copy]将具有retainCount = 2,但只会释放一次。 您应该使用[[item copy] autorelease],或将[item copy]指定给临时变量,并在将其添加到数组后将其释放。