------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、@property
1、在OC中可以通过如下形式声明属性:
@porperty (——————) Car *_car;
2、括号里面的选项分为4大类。
1. SET方法内存相关。
1> retain :对象 release旧值, retain新值。
2> assign : 基本类型,直接赋值,默认的
3> copy :和协议相关,也有retain的功能。
2. 读写方式
1> readwrite 默认。
2> readonly
3. 多线程相关
1>nonatomic : 性能高, 不加锁。
2>atomic : 性能低 默认
4. setter和getter的方法名。
1> setter = 方法名 一般不用,当返回的数据类型是布尔类型的时候通过getter = isRich, 来判断是否有钱,
规范化。
2> getter = 方法名。
3、使用@property系统自动生成属性方法
使用 @porperty (retain) Car *car;
系统会自动生成
- (void) setCar:(Car*)car
{
if(car != _car)
{
[_car release];
_car = [car retain];
}
}
这样程序员不用重复写大量的重复的代码了。
4、实际开发中使用的形式
设计一个人类,
typedef enum (sexMan,sexWoman) Sex;
typedef struct (int Year; int Month; int Day) Date;
@interface Uer : NSObject
@porperty (nonatomic , retain, readwrite) NSString *name; 系统可以生成大量本应该程序员写的重复代码。自动优化内存,release,retain
@porperty (nonatomic, retain, readwrite) NSString *phone;
@porperty (nonatomic, assign,readwrite) Sex sex;
@porperty (nonatomic, assign, readwrite) Date date;
@end // User
总结:使用@porperty可以大大减少重复的代码量,系统会自动生成优化后的高效代码。