如果我有一个参数传递给一个方法,我需要在方法结束时释放参数吗?
问问题
3944 次
4 回答
72
不。想想NARC:“新分配保留副本”。如果你没有做任何这些事情,你就不需要释放。
于 2010-05-19T11:56:19.723 回答
6
请阅读Cocoa 内存管理指南。以下规则与您的问题有关:
如果您使用名称以“alloc”或“new”开头或包含“copy”(例如,alloc、newObject 或 mutableCopy)的方法创建对象,或者向其发送保留消息,则您将获得对象的所有权。您有责任放弃使用 release 或 autorelease 拥有的对象的所有权。任何其他时间您收到一个对象,您都不能释放它。
显然,您没有通过创建参数来获得参数(在您的方法中)。因此,您需要担心的唯一部分是您是否在方法中保留了它们。如果你这样做了,你必须释放或自动释放它们。如果没有,则不得释放或自动释放它们。
于 2010-05-19T14:58:00.910 回答
2
retain
只有在您的方法中使用它们时,您才需要释放它们。约定是,调用者负责确保作为参数传递的对象至少在调用处于活动状态时仍然存在。
于 2010-05-19T11:57:08.270 回答
0
除非您直接使用基础对象,否则您现在应该将所有这些委托给 ARC。
于 2013-08-23T06:27:50.640 回答