iOS中assign引用对象为什么不会被置为nil

2020-09-14  本文已影响0人  Sweet丶
一、assign和weak的区别?
二、为什么assign不会自动赋值为nil?

看MRC下的setter方法实现可知,assign直接是对属性的指针赋值为参数的指针,不会调用retain,所以计数器不会+1;ARC下对象销毁时会将weak引用表里面的指针逐个赋值为nil,对于assign没有这个操作,所以不会赋值为nil。

//assign环境下
-(void)setName:(NSString *)name{

    _name = name;
}
//retain环境下
-(void)setName:(NSString *)name{
    
    if (_name != name) {
        [_name release];
        _name = [name retain];
    }
}
//copy环境下
-(void)setName:(NSString *)name{

    if (_name != name) {
        [_name release];
        _name = [name copy];
    }
}
上一篇 下一篇

猜你喜欢

热点阅读