语义设置readwrite\readonly\assign\retain\copy\nonatomic

本文详细介绍了Objective-C中属性修饰符的使用方法及其特点,包括readwrite、readonly、assign、retain、copy与nonatomic的区别及应用场景。通过本文,读者可以了解到如何正确选择属性修饰符以确保代码质量和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.readwrite代表写了属性的setter和getter方法的声明和实现
2.readonly代表写了属性的getter方法的声明和实现,没有写setter方法
3.assign代表属性的setter方法是直接赋值,用于基本数据类型
4.retain代表setter方法的实现是release旧值,retain新值,用于OC对象类型
5.copy代表setter方法的实现是release旧值,copy新值,用于NSString、block等
6.nonatomic是非原子性,代表setter方法的实现不加锁

注意区别:
1.默认是atomic,代表同一时刻只有一条线程可以访问,虽然线程安全,但是由于耗费性能,我们一般用nonatomic。
2.assign一般只修饰int、float值类型,虽然也可以修饰对象类型,但是对象被释放后,指针不会被置空,产生野指针的问题。weak修饰对象类型,当对象释放后,指针会自动置空。
3.copy和retain的区别是,如果用retain修饰nsstring类型对象,这个对象被可变类型字符串赋值,若在赋完值之后改变这个字符串的值得话,那么对象的值也会一起改变,所以不安全,用copy就会避免这种问题


转载于:https://juejin.im/post/5b4efa79e51d45195a7125ee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值