@property中的 strong retain copy weak 和assign

ratain copy assign 的本质在MRC中set方法可以模拟:

//浅copy 只复制了变量指针  @property(NSString *)name

- (void)setName:(NSString *)name{

    if (name!=_name) {

        [_name release];
        _name=[name  copy];
    }
}

//深copy  复制了对象指向的内存   @property(NSMutableString *)name2
- (void)setName2:(NSMutableString *)name2{

    if(_name2!=name2){
        [_name2 release];
        _name2=[name2 mutableCopy];

    }
}

//assign 直接复制 @property(int)age

- (void)setAge:(int)age{

    _age=age;

}
- (int)age{

    return _age;
}

//retain 和浅copy一样只复制了指针
// @property(Dog*)dog
- (void)setDog:(Dog *)dog{

    if (_dog!=dog) {
        [_dog release];
        _dog=dog;
        [_dog retain];
    }
}


strong 和 retain 相似 在引入ARC之后引入strong 


weak 和 assign 相似 区别:

1.weak 和 assign差不多 assign直接赋值 不参与内存管理,weak 不对内存拥有所有权,内存被清空 他也会被清空,

2.weak不可以用于非oc对象,assign可以用于非oc对象

一般用 assign 用于 int  nsInteger float 等数值型变量,strong用于自定义的类的对象,除NSString其他的系统对象,copy一般用于NSString对象类型,weak 可以用于代理模式中放置对象的重复引用,自定义IBOutlet控件 等



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值