1.属性的存取特性
- readwrite,自动创建存取方法,默认特性
- readonly,只创建取方法
2.属性的多线程特性
- atomic,使用锁机制确保对该属性的操作的原子性,默认特性
- nonatomic,无原子性,所以速度会快一点,建议使用的特性
3.属性的引用相关特性
- strong,在进行存操作时,会持有传进来的对象,放弃原有对象,默认特性
- weak,在进行存操作时,不持有传进来的对象,当该对象被释放时,自动赋为nil
- unsafe_unretained,与weak类似,只是对象被释放后,不会自动赋为nil
4.属性的拷贝特性
- assign,在进行存操作时,直接赋值为传进来的变量,默认特性
- copy,在进行存操作时,拷贝传入的对象,该对象必须实现NSCopying协议的copyWithZone:方法,OC框架中,不可修改的对象一般仅仅返回self,并不会发生拷贝,因为对不可修改的对象进行复制没有必要,而对于可修改对象,一般会返回对应的不可修改对象,例如NSMutableString与NSString
5.属性虽然帮我们完成了存取方法,但是我们也可以手动实现存取方法来覆盖自动生成的存取方法,例如想要在存操作的时候更新下界面。但是这种情况下我们必须通过@synthesize创建实例变量(下划线开头的,原本会自动生成的成员变量)
#import "TestClass.h"
@interface TestClass()
@property (nonatomic) NSString * name;
@end
@implementation TestClass
//合成实例变量
@synthesize name=_name;
-(NSString*)name
{
return _name;
}
-(void) setName:(NSString *)name
{
_name=name;
//更新界面
}
@end