2011-08-26 76 views

回答

4

都能跟得上。可可的memory management rules说,你只有自己(因此需要释放)对象从名称中包含的“”一个方法返回,“ALLOC”,“保留”,或“复制”(NARC)。由于该方法不包含这些内容,因此您不需要释放它。

+3

NARC,由ARC取代:) – jtbandes

+0

哈哈,那确实... –

+0

感谢。 ** NARC **是一个很棒的助记符。现在我可以在晚上睡觉。 – SSteve

1

是Objective C的库中观察到非常一致的标准是开头的“黄金”或“复制”(和,我想,其他的一些模糊的动词)返回一个保留对象的方法,而一切的回报一个自动释放的对象。

任何异常,应充分证明的规格。

+0

晦涩的词是“新”,这几乎没有人使用(这可能会改变人们采用ARC ......),另外一个,毫不隐晦可言,是'retain'。请注意,仅仅因为方法不返回拥有引用并不意味着它返回一个自动释放对象。 –

+0

如果某个方法没有返回自动释放对象(并且不是所指出的异常之一),那么它必须记录。 (这适用于用户编写的方法以及Objective C库。) –

+0

如上所述,不真实。我想你的意思是说“如果一个方法*返回一个拥有引用*(并且不遵循命名模式),那么它*必须*被记录下来”。那是真实的。一个方法可以返回一个对象而不返回所有权或自动释放该对象。 –