查看標題。更具體地說,我試圖返回一個對象的mutableCopy,但它返回的retainCount爲1,我擔心它會泄漏。在Objective-C中返回一個對象時,retainCount應該是什麼?
0
A
回答
0
mutableCopy總是遞增對象的retainCount。所以,如果你使用retain,copy或者mutableCopy你必須在dealloc方法中釋放。
如果要返回該對象,你必須使用自動釋放,這樣的:
[[[NSString alloc] initWithString:@"Test"] autorelease];
的自動釋放池,將釋放你的對象,也沒有必要在dealloc方法來釋放。
希望能幫到你。
+1
我明白,但如果我返回所說的對象呢? – skylerl 2010-03-13 23:51:38
+0
對不起,想念你的問題中的回報部分。 – reinaldoluckman 2010-03-14 00:36:02
10
你的方法應該遵循標準的內存管理程序。如果你的方法返回一個對象,但不包含「alloc」,「new」,「copy」,「create」或「retain」等字,那麼該對象應該被自動釋放。
如果它包含其中一個單詞,那麼它應該返回一個+1保留計數。
例如:
//return an autoreleased object, since there's no copy, create, retain, alloc, or new
- (id) doSomethingWithFoo:(id)foo {
id fooCopy = [foo copy];
[fooCopy doTheNeedful];
return [fooCopy autorelease];
}
//return a +1 object, since there's a copy in the name
- (id) copySomethingWithFoo:(id)foo {
id fooCopy = [foo copy];
[fooCopy doTheNeedful];
return fooCopy;
}
相關問題
- 1. 什麼是ObjectiveC中的retainCount?
- 2. 爲什麼retainCount返回-1
- 3. 爲什麼retainCount返回2
- 4. 爲什麼我的JS應該返回一個對象返回undefined?
- 5. ServiceStack Authorize方法的返回對象應該是什麼?
- 6. 爲什麼line()不總是返回一個線對象?爲什麼它有時似乎返回一個雙?
- 7. 爲什麼我的SqlCommand應該是一個int時返回一個字符串?
- 8. 什麼應該dynamicType在Swift中返回?
- 9. 在Python中從網站返回的響應對象是什麼?
- 10. 返回類型應該是什麼?
- 11. 爲什麼這個腳本返回「'空'不是一個對象'?
- 12. 我應該如何從函數中返回一個對象?
- 13. 爲什麼 - [NSObject retainCount]有時會返回意外的值?
- 14. 爲什麼MarshalByRefObject.InitializeLifetimeService返回一個對象而不是ILease?
- 15. .responseXML()返回什麼對象?
- 16. LocateRegistry.createRegistry()返回什麼對象?
- 17. python不返回None對象,它應該返回時TDirectoryFile根對象
- 18. 爲什麼Mockito的模擬返回0時應該返回null?
- 19. 應該返回什麼,對onOptionsItemSelected()是true或false?
- 20. 什麼應該是一個React組件,什麼應該只是一個HTML?
- 21. 當您返回View時應該是PartialView會發生什麼?
- 22. 在MVC應用程序中提交多個表單時應該返回什麼?
- 23. 爲什麼retainCount在釋放被調用後返回值?
- 24. 數據映射器應該如何返回一個域對象?
- 25. 接口方法應該返回一個自定義對象嗎?
- 26. 返回值(返回對象)忽略時會發生什麼?
- 27. 這個lambda表達式的返回類型應該是什麼?
- 28. 在VBA中返回一個對象
- 29. 爲什麼不將JavaScript中的對象轉換爲JSON並返回該對象?
- 30. 在成員函數中返回類對象是什麼意思?
保留計數應該是什麼是應該的;具體的數字並不有趣。戴夫德隆的答案是正確的。 – bbum 2010-03-14 01:14:51