如果我创建一个视图,并将其添加为子视图并将其添加到数组中,是否必须释放它两次?
UIView* cat = [[UIView alloc] initWithFrame:someFrame];
[self.view addSubview:cat];
[self.animals addObject:cat];
[cat release];
[cat release];
对我来说,有两个发布声明似乎很奇怪,而且我还没有看到有人这样做。但在这种情况下,保留计数不会增加 2 吗?
你应该只有一个release
— 平衡alloc
。两者都不addSubView:
nor addObject:
赋予调用者对该对象的所有权,因此调用者不需要用对象来平衡它们release
。正在阅读内存管理指南 http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html应该为你清除所有这些。
记住“NARC”可能会有所帮助 - 如果您在包含单词“的对象上调用方法”new", "alloc", "r保留”或“copy”,你需要释放它。正如你在上面的代码中看到的,只有alloc
符合要求。由于您只 NARC 一次,因此您只需要释放一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)