//属性的属性分为三大类
//1.读写性控制
//》readOnly只读 只会生成get方法 不会生成set方法
//》readwrite可读可写 会生成set方法 也会生成get方法(默认设置)
//> setter =aa:(需要加冒号)重新设置set方法名称 名称将会变成后边写得名称 aa前没有set
//getter =bb(不需要加冒号)重新设置get方法名称 名称就是重新设置的
//》 一般情况下 不会单独去设置set get 的方法名称
//2.原子性控制
//》atomic:设置这个 关键字之后 在访问的时候 会有加锁和解锁的过程 大多数是在为线程做考虑 为了线程的安全(默认设置)
//》nonatomic:普通的set get 方法通常情况下我们基本使用此关键字
//3.语意设置:
//》assain:非对象类型使用
//retain:任何对象类型都可以使用
//copy:只有遵守NSCopying的对象类型才可以使用(不遵守的对象类型会崩溃)
//使用总结:对象类型除了NSString*之外全部用retain;
.h
@property(nonatomic,assign)NSInteger age;
@property(nonatomic,retain)NSArray*array;
@property(nonatomic,copy)NSString *name;
//除了(NSstring*)之外其他对对象只能使用retain
.m@synthesize age =_age;
@synthesize array =_array;
@synthesize name =_name;
//assain修饰的属性 生成的set get方法
-(void)setAge:(NSInteger)age
{
_age =age;
}
-(NSInteger )age
{
return _age;
}
//retain 修饰的属性
-(void)setArray:(NSArray *)array
{
if (_array !=array)
{
[_array release];
_array =[array retain];
}
}
-(NSArray*)array{
return [[_array retain]autorelease];
}
//copy修饰的属性
-(void)setName:(NSString *)name
{
if (_name !=name) {
[_name release];
_name = [name copy];
}
}
-(NSString *)name
{
return [[_name retain]autorelease];
}