方法是否保留傳遞的參數?如果是這樣,我可以在下一行釋放這些參數嗎?如果不是,那麼我何時釋放這些對象(以防我在本地分配這些對象)?方法在Objective-C中保留參數嗎?
1
A
回答
1
不,他們只是處理對象,他們不控制內存。
您應該在創建方法中釋放某些內容。 或者,如果它是財產或伊娃,你應該釋放它在dealloc(如果它被保留)。
2
該語言不會自動保留參數。但是,遵守規則的代碼將保留或複製在執行離開其範圍後需要保留的任何內容。
換句話說:
id object = [[SomeClass alloc] init];
[otherObject doSomethingWithObject:object];
[object release];
該代碼應始終是好的,因爲如果doSomethingWithObject:
需求,以保持它的參數周圍,它會retain
發送它,如果它不,它不會。
0
方法不增加引用計數。但是,如果您將其分配給保留計數的變量,則需要明確向兩者發送一個零消息。當您不再需要使用它時,可以釋放一個變量。因此,只要發送了保留消息,分配的變量就會使其引用計數遞增。因此,您需要發送相同數量的發佈消息,直到引用計數變爲零。
相關問題
- 1. 在Objective-C中保留/釋放方法參數是一個好主意嗎?
- 2. 將參數傳遞給方法:是否應該保留參數?
- 3. 方法參數:解構+保留原始參數(ReactJS組件)
- 4. as_json中參數錯誤[`timeout`方法被保留!]
- 5. AMQP'connection.open'保留參數
- 6. 用於在方法論證中指定協議名稱的ObjectiveC語法參數
- 7. 可能在智能感知中保留一種方法嗎?
- 8. 在drawRect方法中刪除形狀? - ObjectiveC
- 9. 在react-router中保留查詢參數
- 10. 在Sharepoint iFrame中保留QueryString參數
- 11. 在方法中保留變量
- 12. 函數保留參數
- 13. Webmethod參數保留null
- 14. 使用argparse保留參數
- 15. 保留設置參數
- 16. spring portlet mvc:保留參數
- 17. 保留GET參數的RewriteRule
- 18. setRetainInstance()方法是否保留ArrayAdapter數據?
- 19. Presentmodalviewcontroller方法問題與保留計數
- 20. Java併發保留方法
- 21. 無法在GridView中保留數據
- 22. 無法在數組中保留負值
- 23. 從ObjectiveC中調用子方法(IOS6)
- 24. 'java.lang.Class.getDeclaredField()'的ObjectiveC中的類似方法'
- 25. ProGuard的「保留」參數中的泛化
- 26. Rails:在提交後保留參數
- 27. 保留數組在UITableView方法中不可見?
- 28. 在dealloc方法中檢查保留計數
- 29. 在sql server中保留單個數據的正確方法?
- 30. 通過中介方法保留/發佈
感謝您的回覆。 – optimusPrime
在上面的例子中,假設執行順序發生,萬一doSomethingWithObject方法不保留參數,在下一行釋放對象不應該導致問題? – optimusPrime
@ nithin.manu:你說得對。同樣,如果方法保留了參數,這裏的釋放只會減少引用計數。因此,保留對象也必須發送釋放消息。 –