OC学习之属性关键字以及set和get方法

来源:互联网 发布:window7的com端口 编辑:程序博客网 时间:2024/06/02 14:41

//属性的属性分为三大类

//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)

    {

        [_arrayrelease];

        _array =[arrayretain];

    }

}


-(NSArray*)array{

    return [[_arrayretain]autorelease];

}

//copy修饰的属性

-(void)setName:(NSString *)name

{

    if (_name !=name) {

        [_namerelease];

        _name = [namecopy];

    }

}

-(NSString *)name

{

    return [[_nameretain]autorelease];

}





0 0
原创粉丝点击