zoukankan      html  css  js  c++  java
  • 声明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上;

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

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

    新鲜出炉的菜鸟一枚,希望大家能互相切磋,互相琢磨,共同进步!
  • 相关阅读:
    mysql批量替换指定字符串
    php中英字符串截取
    比较两个JSON字符串是否完全相等
    Java FastJson 介绍
    线程池
    DBUS及常用接口介绍
    在Mac中如何正确地设置JAVA_HOME
    base64 原理
    sizeof与strlen的区别
    Kubernetes 部署失败的 10 个最普遍原因
  • 原文地址:https://www.cnblogs.com/lidaxia/p/4751308.html
Copyright © 2011-2022 走看看