具有+0保留计数的对象返回给调用者,其中预期+1(拥有)保留计数 - 为什么?

时间:2013-02-28 20:57:11

标签: objective-c memory-management memory-leaks

我遇到以下代码时出现问题,其中Xcode标记了内存问题。警告位于返回线上的代码下方。有人知道为什么,我能做些什么呢?

- (id)copyWithZone:(NSZone *)zone
{
    NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:self];
    return [NSKeyedUnarchiver unarchiveObjectWithData:archivedData];
}
  

Mvariable.m:177:2:具有+0保留计数的对象返回给调用者,其中预期+1(拥有)保留计数
  Mvariable.m:177:9:Method返回一个带有+0保留计数
的Objective-C对象   Mvariable.m:177:2:对象以+0保留计数返回给调用者   Mvariable.m:177:2:具有+0保留计数的对象返回给调用者,其中预期+1(拥有)保留计数

1 个答案:

答案 0 :(得分:7)

以“copy”,“create”,“new”,“alloc”或“retain”开头的方法必须返回一个已保留的对象,即调用者必须释放它。

[NSKeyedUnarchiver unarchiveObjectWithData:archivedData]返回一个自动回放的对象。

请参阅:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html