账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    objective-c中weak在什么情况下被释放
    58
    0

    初学oc,在网上我看到了strongweak的解释:只要有一个强引用还未被释放,就算把所有弱引用释放了,这个引用也不会被释放。
    但是我想问怎么创建一个只有弱引用的变量,如果创建了,会发生什么情况。
    我在学习中遇到过一个问题,

    @interface ViewController ()
    // 我用声明了一个弱引用属性 一个label标签
    @property (weak, nonatomic) UILabel *label;
    @end
    
    @implementation ViewController
        CGFloat labelWidh = 85;
        CGFloat labelHeight = 34;
        CGFloat labelTopView = 454;
        CGRect labelFrame = CGRectMake((screen.size.width - labelWidh) / 2, labelTopView, labelWidh, labelHeight);
        // 在这里,编辑器会发出警告
        // Assigning retained object to weak property; object will be released after assignment
        self.label = [[UILabel alloc] initWithFrame: labelFrame];
        self.label.text = @"code label";
        self.label.textAlignment = NSTextAlignmentCenter;
        [self.view addSubview:self.label];
    @end

    实际运行会发现,label并没有出现在视图上。
    在警告之前打断点会发现,定义的label属性早已变成了nil,我的猜测是由于一开始就是弱引用,没有强引用,所以就自动被释放了。不知道对不对,还请大佬们解释解释

    3
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 呆檬酸甜 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部