声明UI控件为什么用weak?

weak : UI控件 weak弱指针,一旦所指向的对象销毁,那么这根线就会清空,就意味着指针变量会变成null,这样就不会出现错误,比如野指针错误.

1.为什么UI控件用weak?而不用strong?

如果你不手动删除这个控件,一般情况下strong和weak用在UI控件上是没有区别的,因为它一直在控制器上显示.

但是如果连线属性修饰用strong,你删除了这个控件,比如一个UIbutton,调用了[self.button removeFromSupview],那么这个控件一直有强指针指向着,它就不会被销毁,占用了内存,造成了内存泄露;

2.UI控件在内存中的表现:

首先控制有个View,控制器的view里面有subviews这个数组,数组里面放着UIButton这个对象,它是用强指针指着这个UIButton对象,IBOutlet也用一根强指针着这个UIButton对象,所以直接拖控件给控制器的view,这个控件可以显示到控制器的View上;
222254288949794.png

3.为什么添加UIButton到storyboard,并且拖线用了weak,调用[self.button removeFromSupview]后,直接打印这个对象仍然有值?

因为有IBOutlet这根强指针指着,所以调用[self.button removeFromSupview]这个方法后打印button这个对象仍然有值,放在beganTouches:这个方法中打印,这个UIButton对象就是NULL;

转载于:https://www.cnblogs.com/lidaxia/p/4751308.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值