Objective-C中的retainCount是什么?

12

我在我的第一个屏幕上使用了 UITableViewUINavigation 控制器。

在我的第一个屏幕中,当调用 viewDidLoad 时,我使用 NSLog(@"Home Screen retain Count=%d",[self retainCount]); 记录下它的引用计数,并输出为 6。

这样做正确吗?

2个回答

15

retainCount指的是对象上未解除拥有权的所有权主张数量。

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

您可以使用“release”或“autorelease”来放弃所有权。这些操作会减少retainCount。

但是,您永远不应该关注retainCount的值,它最多只会让人感到困惑,最坏的情况下则会误导您。只需遵循内存管理规则 - 在需要保留对对象的引用时获取所有权,在完成后放弃所有权,这样就不会出现问题。

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


1

听起来没问题。为什么会错呢?

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接