2009-07-30 132 views
12

我有一个UITableView作为我的第一个屏幕与UINavigation控制器。什么是ObjectiveC中的retainCount?

在我的第一个屏幕I NSLog(@"Home Screen retain Count=%d",[self retainCount]);中,当它的viewDidLoad被调用时它会记录6。

这是正确的吗?

回答

15

retainCount是对象上未完成所有权声明的数量。

如果您使用名称以“alloc”或“new”开头或包含“copy”(例如alloc,newObject或mutableCopy)的方法创建对象,或者将它发送给对象保留消息。所有这些都会增加retainCount。

您使用“release”或“autorelease”放弃所有权。这些递减retainCount。

但是,您永远不应该关注retainCount的价值,它最多是令人困惑的,最糟糕的是误导。只需遵循memory management rules - 在需要保留对某个对象的引用时放弃所有权,并在完成时放弃所有权,并且您不会遇到问题。

如果您正在查看retainCount,您会以错误的方式处理事情,而您只会进一步迷惑自己。

1

听起来很好。为什么会出错?

一般来说,试图从保留计数中确定事情是一个坏主意。没有关于可以保留对象的次数的规则。唯一的规则是每个保留必须与发布平衡。