美文网首页
为什么 iOS 开发中,xib跟storyboard拖得控件一般

为什么 iOS 开发中,xib跟storyboard拖得控件一般

作者: eryuxinling | 来源:发表于2016-12-19 14:31 被阅读137次

    首先有一点,在OC中,如果对象没有强引用,就会被自动释放,那么为什么控件还可以设为weak?

    1. 从storyboard或者xib上创建控件,在控件放在view上的时候,已经形成了如下的引用关系,以UIButton为例:
      UIViewController->UIView->subView->UIButton
      然后你为这个UIButton声明一个weak属性
    @property(nonatomic, weak) IBOutlet UIButton *btn;
    

    相当于xib/sb对这个Button是强引用,你声明的属性对它是弱引用。

    2.手动创建控件
    a). 将控件声明成strong

    @property(nonatomic, strong) UIButton *btn;
    

    那么你在实现这个控件时只需这样:

    _btn = [[UIButton alloc] init];
    [self.view addSubview:_btn]
    

    b). 将控件声明成weak

    @property(nonatomic, weak) UIButton *btn;
    

    那么你在实现这个控件时需要这样:

    UIButton *button = [[UIButton alloc] init];
    _btn = button;
    [self.view addSubview:_btn];
    

    ============================
    最后给的建议是:
    1.如果用Stroyboard/xib拖线,用weak
    2.如果自定对象,用strong(但我还是习惯用weak暂时=_=)
    3.根据个人习惯最好

    相关文章

      网友评论

          本文标题:为什么 iOS 开发中,xib跟storyboard拖得控件一般

          本文链接:https://www.haomeiwen.com/subject/xedtvttx.html