【发布时间】:2010-11-15 10:06:14
【问题描述】:
我有一个UITableView 作为带有UINavigation 控制器的第一个屏幕。
在我的第一个屏幕中,我 NSLog(@"Home Screen retain Count=%d",[self retainCount]); 并在调用 viewDidLoad 时登录 6。
这对吗?
【问题讨论】:
标签: objective-c cocoa-touch retaincount
我有一个UITableView 作为带有UINavigation 控制器的第一个屏幕。
在我的第一个屏幕中,我 NSLog(@"Home Screen retain Count=%d",[self retainCount]); 并在调用 viewDidLoad 时登录 6。
这对吗?
【问题讨论】:
标签: objective-c cocoa-touch retaincount
听起来不错。为什么会出错?
一般来说,尝试从保留计数中确定事物是一个坏主意。关于可以保留对象的次数没有规定。唯一的规则是每个保留必须与释放平衡。
【讨论】:
retainCount 是对象上未完成的所有权声明数。
如果您使用名称以“alloc”或“new”开头或包含“copy”的方法(例如,alloc、newObject 或 mutableCopy)创建对象,或者向其发送保留消息。所有这些都会增加 retainCount。
您通过使用“释放”或“自动释放”放弃所有权。这些会减少 retainCount。
但是,您永远不应该注意 retainCount 的值,它充其量是令人困惑的,最坏的情况是误导。只需遵循memory management rules - 当您需要保留对对象的引用并在完成时放弃所有权时取得所有权,您不会有任何问题。
如果您正在查看retainCount,那么您的处理方式是错误的,您只会进一步混淆自己。
【讨论】: