iOS中用strong和weak来修饰成员变量的对比

本文探讨了在iOS开发中,使用strong和weak修饰成员变量的差异。通过实例验证,作者指出weak修饰的成员变量在未使用懒加载初始化时,会被释放,导致添加到视图无效。同时,当weak修饰的UI元素被removeFromSuperview后,会变为nil,而strong修饰的元素仍存在于内存中。因此,对于需要在特定条件下重新显示的UI,使用weak可能是合适的。此外,文章还提到了在面试中关于strong、weak、copy属性区别的常见问题。
摘要由CSDN通过智能技术生成

对于纯代码布局,用@property声明成员变量时,我是很自然的用strong来修饰的。然后突然有人问我用weak来修饰可不可以,我第一反应是不可以,因为用weak来修饰,初始化过后就会被释放掉,就算我第一句写了初始化的方法,立即执行addSubView也是没办法将其添加上去的。xcode也给出了很明确的警告:Assigning retained object to weak variable; object will be released after assignment。然后他又给分析了一堆内存管理的东西,得出的结论是可以。
由于我之前确实没有思考过这个问题,对于这个结论我也是半信半疑,然后我就写了个demo来验证。自己写demo之前我想起了之前看过的一些代码,有些成员变量是用weak修饰的,初始化方法是将一个临时变量赋值给它,然后将它加到父View上,我很不理解这样为什么这样写,直接用strong修饰,然后来个懒加载初始化不是更好?或者直接初始化然后再添加?这样算起来还少一行代码。。。
写demo的过程中我又发现了一些其他的东西,首先我声明两个成员变量,一个strong修饰,一个weak修饰。

@interface ViewController ()

@property(nonatomic,strong) UILabel * strongLabel;
@property(nonatomic,weak) UILabel * weakLabel;

@end

strongLabel使用懒加载来初始化:

-(UILabel *)strongLabel{
    if (!_strongLabel) {
        _strongLabel &#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值