&1.1.属性定义 :A;
@property 在.h文件中实现
1.@property 属性关键字 用来定义属性
2.@property NSString *name;
3.属性作用:就是一组setter和getter方法 与类相似 属性也需要声明和实现 属性的类型,代表setter方法参数类型,以及getter方法返回值类型.
B:synthesize合成实现.在.m文件中实现
用来setter和getter方法的实现.后跟属性名(也就是是要实现哪一组setter和getter方法) = 右边填写实例变量名, 在实现实例变量名字
&1.2 读写特性 @property (readwrite) NSString * name; readonly只读只能生成getter方法 //读写特性
1.readwrite可读可写(默认),自动生成setter和getter方法
2.readonly只读,自动生成getter方法,不会生成setter方法.
getter=方法名(特记只是修改getter方法名其余内容不变)@property (readwrith,getter = aa) NSString * name; setter=方法名(特记setter方法的方法名不要忘记加冒号,也只是修改setter方法名) @property (readwrith,setter = bb:) NSString * name;
B.原子性特性.考虑:效率与安全性) //
1.atomic:有原子性,保证线程安全,默认 //
2.nonatomic:非原子性,不保证安全性,推荐使用@property (nonatomic, readwrith,setter = bb:) NSString * name;
C. 语义特性:
1.assign 用于基本数据类型,对象也可以使用,只是简单赋值
2.retain 适用于对象,在内部做优化,拥有所有权.例如:@property (nonatomic,retain) NSString * name;
3.copy 适用于对象类型,复制出一个新对象,对新对象拥有所有权.
D. 点语法: 通过对象,属性名,如果操作符在左边,则内部调用的setter方法,给实例变量赋值,否则是调用getter方法取出实例变量名,
特记:点是属性,不是实例变量.
p.age = 20;等价于[p setAge:20];
int age = P.age;等价于 int age = [p age];
stu.name = @"bb";等价于[stu setWithName:@"bb"]
stu.name;等同于[stu name];)