属性与点语法(重点)

&1.1.属性定义  :A;

     @property   在.h文件中实现

1.@property  属性关键字  用来定义属性

2.@property NSString *name;

3.属性作用:就是一组setter和getter方法  与类相似  属性也需要声明和实现  属性的类型,代表setter方法参数类型,以及getter方法返回值类型.

              B:synthesize合成实现.在.m文件中实现

用来settergetter方法的实现.后跟属性名(也就是是要实现哪一组settergetter方法) = 右边填写实例变量名, 在实现实例变量名字

&1.2 读写特性 @property (readwrite) NSString * name; readonly只读只能生成getter方法 //读写特性  

1.readwrite可读可写(默认),自动生成settergetter方法          

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];)

你可能感兴趣的:(属性,点语法,读写特性)