查看标题。更具体地说,我试图返回一个对象的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