您是否需要在Objective-C中释放方法参数?

时间:2010-05-19 11:55:11

标签: iphone objective-c parameters methods narc

如果我将参数传递给方法,是否需要在方法结束时释放参数?

4 个答案:

答案 0 :(得分:70)

没有。想想 NARC :“新Alloc保留副本”。如果你没有做任何这些事情,你就不需要发布。

答案 1 :(得分:6)

请阅读Cocoa memory management guidelines。以下规则与您的问题相关:

  

如果使用名称以“alloc”或“new”开头或包含“copy”(例如,alloc,newObject或mutableCopy)的方法创建对象,或者如果发送它,则获取对象的所有权保留信息。您有责任使用release或autorelease放弃您拥有的对象的所有权。在收到对象的任何其他时间,您都不能释放它。

显然,您没有通过创建参数来获取参数(在您的方法中)。因此,您需要担心的唯一部分是您是否将它们保留在方法中。如果您这样做,则必须释放或自动释放它们。如果不这样做,则不得释放或自动释放它们。

答案 2 :(得分:2)

如果您在方法中retain,则只需要释放它们。惯例是,调用者负责确保作为参数传递的对象至少与调用处于活动状态时一样长。

答案 3 :(得分:0)

除非您直接使用基础对象,否则您现在应该将所有这些委托给ARC。