我在我的第一个屏幕上使用了 UITableView
和 UINavigation
控制器。
在我的第一个屏幕中,当调用 viewDidLoad
时,我使用 NSLog(@"Home Screen retain Count=%d",[self retainCount]);
记录下它的引用计数,并输出为 6。
这样做正确吗?
我在我的第一个屏幕上使用了 UITableView
和 UINavigation
控制器。
在我的第一个屏幕中,当调用 viewDidLoad
时,我使用 NSLog(@"Home Screen retain Count=%d",[self retainCount]);
记录下它的引用计数,并输出为 6。
这样做正确吗?
retainCount指的是对象上未解除拥有权的所有权主张数量。
如果您使用以“alloc”或“new”开头或包含“copy”的方法创建对象(例如,alloc、newObject或mutableCopy),或者向其发送retain消息,则会获得该对象的所有权。所有这些操作都会增加retainCount。
您可以使用“release”或“autorelease”来放弃所有权。这些操作会减少retainCount。
但是,您永远不应该关注retainCount的值,它最多只会让人感到困惑,最坏的情况下则会误导您。只需遵循内存管理规则 - 在需要保留对对象的引用时获取所有权,在完成后放弃所有权,这样就不会出现问题。
如果您查看retainCount,那么您的方式是错误的,您只会进一步混淆自己。
听起来没问题。为什么会错呢?
总的来说,试图从保留计数中确定事情是一个坏主意。关于您可以保留对象的次数没有规定。唯一的规则是每个保留必须与释放平衡。