objective-c - 关于iOS里IBOutlet对象的内存管理
PHPz
PHPz 2017-04-17 12:03:08
[iOS讨论组]

table是和xib绑定的对象,在vc释放时打印_table的引用数居然是2,哪位高手能解答一下

环境:xcode5 sdk7

@interface testViewController : UIViewController {

}

@property (retain, nonatomic) IBOutlet UITableView *table;
@end 
@implementation testViewController
- (void)dealloc {
    [_table release];
    [super dealloc];
    NSLog(@"%d",[_table retainCount]);
}
@end
PHPz
PHPz

学习是最好的投资!

全部回复(1)
PHP中文网

Nib Files

你需要了解nib以及outlet的工作方式:当加载nib文件的时候, table会被初始化,这时候它的retain count是1, 然后建立nib文件里对象的连接,这时候会调用到你定义的属性的set方法, 因为你定义成了retain, 所以这时候table的retain count变成了2, 属性的getter/setter会用到autorelease,这时候就会变成3!

推荐IBoutlet的属性定义成assign(weak)就可以了!

其实你不需要在意retain count:“This method is of no value in debugging memory management issues. Because any number of framework objects may have retained an object in order to hold references to it, while at the same time autorelease pools may be holding any number of deferred releases on an object, it is very unlikely that you can get useful information from this method.”

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号