12

我有一个UITableView带有UINavigation控制器的第一个屏幕。

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

它是否正确?

4

2 回答 2

15

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

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

您使用“释放”或“自动释放”放弃所有权。这些减少了retainCount。

但是,您永远不应该注意 retainCount 的值,它充其量是令人困惑的,最坏的情况是误导。只需遵循内存管理规则- 当您需要保留对对象的引用时获取所有权,并在完成时放弃所有权,您不会遇到问题。

如果您正在查看retainCount,那么您做事的方式是错误的,您只会进一步混淆自己。

于 2009-07-30T14:38:01.230 回答
1

听起来不错。为什么会出错?

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

于 2009-07-30T12:10:18.563 回答