@property
@property int age;
-
自从Xcode 4.x后,@property可以同时生成setter和getter的声明和实现
-
默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量 如果没有会自动生成一个_开头的成员变量,自动生成的成员变量是私有变量, 声明在.m中,在其它文件中无法查看,只可以在本类中查看 -
如果需要对数据进行判断需要我们之间重写getter/setter方法
- 若手动实现了setter方法,编译器就只会自动生成getter方法
- 若手动实现了getter方法,编译器就只会自动生成setter方法
- 若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量
@property修饰符
readonly&readwrite
@property(属性修饰符) 数据类型 变量名称;
- readonly 只生成setter方法,不生成getter方法 readwrite 既生成getter 又生成setter方法(默认)
getter&setter
- 指定所生成的方法的方法名称
- getter=你定制的getter方法名称
- setter=你定义的setter方法名称(注意setter方法必须要有 :)
@property (getter=isMarried) BOOL married;
说明,通常BOOL类型的属性的getter方法要以is开头,使用时可以用isMarried也可以用married
retain(MRC)&assign(MRC&ARC)
- retain : release旧值,retain新值(用于OC对象) 会自动帮我们生成getter/setter方法内存管理的代码
retain : 除NSString\block以外的OC对象
- assign : 直接赋值,不做任何内存管理(默认,用于非OC对象类型) 不会帮我们生成set方法内存管理的代码, 仅仅只会生成普通的getter/setter方法, 默认什么都不写就是assign
assign :基本数据类型、枚举、结构体(非OC对象),当2个对象相互引用,一端用retain,一端用assign
__strong Person *p = [[Person alloc] init];__weak Person *p2 = p;
strong&weak(ARC)
- strong : 用于OC对象, 相当于MRC中的retain
strong : 除NSString\block以外的OC对象 - weak(弱指针) : 用于OC对象, 相当于MRC中的assign
delegate用weak
self.person.delegate = self;
//vc-->person-->delegate-->self(vc)
weak : 当2个对象相互引用,一端用strong,一端用weak
-
weak: 代码写控件(有添加addSubView),连线添加的控件属性
-
assign : 用于基本数据类型、枚举、结构体, 跟MRC中的assign一样
copy(ARC&MRC)
- copy : 只用于NSString,NSArray,NSDictionary,block
atomic&nonatomic
- atomic :性能低(默认)
- nonatomic :性能高(在iOS开发中99.99%都是写nonatomic)