什么是ObjectiveC中的retainCount?
问题描述:
我有一个UITableView
作为我的第一个屏幕与UINavigation
控制器。什么是ObjectiveC中的retainCount?
在我的第一个屏幕I NSLog(@"Home Screen retain Count=%d",[self retainCount]);
中,当它的viewDidLoad
被调用时它会记录6。
这是正确的吗?
答
retainCount是对象上未完成所有权声明的数量。
如果您使用名称以“alloc”或“new”开头或包含“copy”(例如alloc,newObject或mutableCopy)的方法创建对象,或者将它发送给对象保留消息。所有这些都会增加retainCount。
您使用“release”或“autorelease”放弃所有权。这些递减retainCount。
但是,您永远不应该关注retainCount的价值,它最多是令人困惑的,最糟糕的是误导。只需遵循memory management rules - 在需要保留对某个对象的引用时放弃所有权,并在完成时放弃所有权,并且您不会遇到问题。
如果您正在查看retainCount,您会以错误的方式处理事情,而您只会进一步迷惑自己。
答
听起来很好。为什么会出错?
一般来说,试图从保留计数中确定事情是一个坏主意。没有关于可以保留对象的次数的规则。唯一的规则是每个保留必须与发布平衡。