当我们使用@property定义属性时,发现在@property关键字与类型之间经常会添加一些额外的指示符,本文整理了这些指示符作用。
assign:
该指示符指定对属性只是进行简单地赋值,不更改对所附的值的引用计数。该指示符主要适用于NSInteger等基本类型,以及short,float,double,结构体等各种C数据类型。
atomic(nonatomic):
指定合成的存取方法是否为原子操作。原子操作指是否线程安全,如果使用atomic,那么该合成的存取方法是线程安全的,即当一个线程进入存取方法的方法体后,其他线程无法进入该存取方法,保证了数据的完整性,atomic是默认值。但是atomic的线程安全同样会造成性能下降,所以在大多数单线程环境中都会使用nonatomic来提高访问性能。
copy:
使用该指示符,那么当使用setter方法对成员变量进行赋值时,会将被赋值的对象赋值一个副本,再将该副本赋值给成员变量。copy指示符会将原成员变量所引用对象的引用计数减一。
strong(weak):
strong指示符指定该属性对被赋值对象持有强引用,weak指示符指定该属性对被赋值对象持有弱引用。强引用是指,只要该引用指向被赋值的对象,那么该对象就不会自动回收。弱引用是指,及时该引用指向被赋值的对象,该对象也可能被回收。
时间: 2024-09-28 21:49:33