声明UI控件为什么用weak?
2015-08-22 23:04
691 查看
weak : UI控件 weak弱指针,一旦所指向的对象销毁,那么这根线就会清空,就意味着指针变量会变成null,这样就不会出现错误,比如野指针错误.
如果你不手动删除这个控件,一般情况下strong和weak用在UI控件上是没有区别的,因为它一直在控制器上显示.
但是如果连线属性修饰用strong,你删除了这个控件,比如一个UIbutton,调用了
1.为什么UI控件用weak?而不用strong?
如果你不手动删除这个控件,一般情况下strong和weak用在UI控件上是没有区别的,因为它一直在控制器上显示.
但是如果连线属性修饰用strong,你删除了这个控件,比如一个UIbutton,调用了
[self.button removeFromSupview],那么这个控件一直有强指针指向着,它就不会被销毁,占用了内存,造成了内存泄露;
2.UI控件在内存中的表现:
首先控制有个View,控制器的view里面有subviews这个数组,数组里面放着UIButton这个对象,它是用强指针指着这个UIButton对象,IBOutlet也用一根强指针着这个UIButton对象,所以直接拖控件给控制器的view,这个控件可以显示到控制器的View上;3.为什么添加UIButton到storyboard,并且拖线用了weak,调用[self.button removeFromSupview]后,直接打印这个对象仍然有值?
因为有IBOutlet这根强指针指着,所以调用[self.button removeFromSupview]这个方法后打印button这个对象仍然有值,放在
beganTouches:这个方法中打印,这个UIButton对象就是NULL;
相关文章推荐
- Failed to sync Gradle project '项目名称(module)' Error:failed to find Build Tools revision 20.0.0
- hue安装与部署
- hue安装与部署
- hue安装与部署
- hue安装与部署
- leetCode 115.Distinct Subsequences(子序列距离) 解题思路和方法
- CSU1207(Strictly-increasing sequence)
- PAT 1017. Queueing at Bank (25)
- JavaSE复习日记 : 循环终止语句(break/break outerFor/continue)
- IOS UI TabBar标签栏的使用
- 工厂模式和builder模式的区别
- 阿里14年机试-----在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- Android GUI之Window、WindowManager
- IOS UI UIScrollView+UIPageControl组合使用
- SUID + SGID + STICKY
- poj 2031 Building a Space Station【最小生成树】
- 用户体验设计师、UI 设计师和交互设计师有什么区别?
- Codeforces Round #276 (Div. 1) B. Maximum Value(哈兮)
- UILabel
- sturt1 submit 提交在后台回去不到表单的值,是否加了disabled="true "属性?