【发布时间】:2012-04-22 02:46:49
【问题描述】:
以 NSObject 方法-(id)awakeAfterUsingCoder:(NSCoder *)decoder 为例,文档说:
允许一个对象在被解码后替换另一个对象 为自己。例如,表示字体的对象可能会在 被解码,释放自己并返回一个现有的对象 与自身相同的字体描述。这样,冗余对象可以 被淘汰了。
通常你会这样做
[self release];
return substitutedObject;
使用 ARC,您必须省略此行。这不会泄露吗?或者我应该相信 NSCoder 对象为我释放原始对象?如果是这样,为什么您必须首先使用非 ARC 代码显式释放 self?
根据编译器文档对 self 的描述,我认为 self = nil 不正确:http://clang.llvm.org/docs/AutomaticReferenceCounting.html#misc.self
【问题讨论】:
标签: objective-c memory-management automatic-ref-counting nscoder