iOS开发之详解@property属性(copy,strong,weak,nonatomic,readwrite等)

@property一般可存放三种类型的属性,一般我们可以选择其中的一种或者即为@property(A,B,C)

a.第一种表示的是可读性

readonly:表示该变量只是可读,但是不能修改。

readwrite:表示变量的值既可读也可以修改。

b.第二种表示原子性

natomic:默认属性,在多线程情况下会生成一些互斥加锁代码,避免变量的读写不同步的问题。

nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能。

c.第三种表示内存管理

assign:setter 方法直接赋值,引用计数器不会增加,为了解决原类型与环循引用问题,一般用于简单的数据类型int,float等就用它。

retain:使用reatin的话,赋值的时候引用计数器会+1,防止被内存释放掉。拷贝类型属于指针拷贝。

copy:使用copy的话,赋值的时候引用计数器会+1,防止被内存释放掉。拷贝类型属于内容拷贝。

strong:强引用,其存亡直接决定了所指对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示列表中,则此对象会被从内存中释放。简单讲strong等同于retain。

weak:弱引用,不决定对象的存亡。即使一个对象被持有无数个若引用,只要没有强引用指向他,那麽其还是会被清除。简单讲weak比assign多一个功能,就是当对象消失之后会自动把指针变为nil。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值