2011-08-26 50 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

如上所述,不真實。我想你的意思是說「如果一個方法*返回一個擁有引用*(並且不遵循命名模式),那麼它*必須*被記錄下來」。那是真實的。一個方法可以返回一個對象而不返回所有權或自動釋放該對象。 –