关于ios 与xib视图加载相关的内存管理问题 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于ios 与xib视图加载相关的内存管理问题

2016-03-11 14:21:24 1826 1

在通过xib加载视图的时候,我们遵循一个准侧
那就是顶层视图 我们的成员变量要是强引用 若是非顶层视图,而是顶层视图的子视图,为了防止顶层视图被释放以后,字视图还存在而造成的内存泄漏,我们把这字视图的成员变量定义为弱饮用
现在问题是,在ARC模式下,假如我有个视图控制起ViewController,然后有个UIButton子视图
` @interface ViewController:UIViewController
{
weak/strong IBOutlet UIButton* button;
}`

这时,在ARC模式下,无论我是指定它是强引用,还是弱引用,在加载了xib文件中(xib中设置了button和一个UIButton的关联),用
NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)button));方法查看button的retainCount,都一样是3

所以我就不了解了,不是强应用会使对象的retainCount加1,而弱引用不会影响对象的retainCount吗?怎么无论用strong还是weak,得到的retainCount都是相同值呢?
在加载xib文件时,底层到底是怎样给button赋值的?

取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:59:14

    这个跟你是不是 xib 没关系的, 就算你用代码创建也是一样,对于你的问题,给你看个例子

        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 40, 30, 30)];
        label.backgroundColor = [UIColor yellowColor];
        NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)label));
        [self.view addSubview:label];
        NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)label));
        __weak UILabel *aLabel = label;
        NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)label));
        NSLog(@"Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)aLabel));

    输出是:1,2,2,3
    这跟我们以前的理解方式很不同,它仅仅是 weak 变量的 retainCount +1 ,而没有影响到其他变量。所以 weak 的 retainCount 管理是独立的。当只剩下 weak 引用时,就会被自动清零并释放

    0 0
相关问答

8

回答

短视频SDK如何做到视频原始比例裁剪?

EdgePlus 2017-09-13 17:35:01 39853浏览量 回答数 8

11

回答

iphone设置阿里云邮箱的步骤

minioba 2013-04-24 22:04:37 103830浏览量 回答数 11

38

回答

【hi聊】2019年终回顾:程序员这些年经历最大的变化

问问小秘 2019-12-16 16:46:59 58192浏览量 回答数 38

28

回答

钉钉开放平台“常见问题常见问题常见问题“重要请关注

竹梅 2015-12-03 00:39:14 95889浏览量 回答数 28

1

回答

2020年阿里、字节:一套高效的iOS面试题(二)

montos 2020-04-13 15:08:17 37028浏览量 回答数 1

87

回答

ECS云服务器用户操作帮助指南(官方)

qilu 2014-10-22 12:25:15 43413浏览量 回答数 87

11

回答

如何直接上传文件至OSS,不用服务器中转

cevin 2014-01-06 23:05:39 39179浏览量 回答数 11

3

回答

2020年05月编程排行榜-C语言继2015年,重新成为编程排行榜第一名

huc_逆天 2020-05-06 13:43:42 36741浏览量 回答数 3

58

回答

技术入门问答集锦,涉及多种技术方向,解决新人学习困惑

管理贝贝 2016-08-03 10:13:27 53492浏览量 回答数 58

46

回答

H5技术百问——不懂H5你就OUT啦

yq传送门 2017-09-09 11:03:04 48261浏览量 回答数 46
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载