2011-02-25 56 views
2

我在iOS模擬器中遇到了段錯誤11的內存訪問錯誤,但是當我在下面的代碼中註釋了發行版時,它會消失。該值是否應該發佈?

// get get the question number 
NSString *text = [attributeDict valueForKey:XML_TAG_QUESTION_ATTRIBUTE_NUMBER]; 
question.number = [text intValue]; 
//[text release]; <==== no more segfault 11 when this is commented out. 

我的問題是,因爲我收到由NSXMLParser實現返回NS String的實例,不是引用計數增加,我不應該被釋放了嗎?

回答

13

以下是規則:在您的內存管理中始終使用NARC。

如果您致電:
(N)EW
(A)LLOC
(R)Etain的或
(C)OPY ...

你需要釋放。如果沒有,你通過一種方便的方法得到它,並且它是自動釋放的。

對於其他對象的容器,容器中保留有對象,在釋放容器之前不需要擔心它。

+0

偉大的方式來記住,我從來沒有聽說過這樣的說法! :) – Josh 2011-02-25 21:26:03