设置器、访问器与点语法

来源:互联网 发布:软件许可授权书 编辑:程序博客网 时间:2024/06/08 20:58

oc当中通过@property和 @synthesize 配对使用来自动生成变量的set和get方法,通过使用点语法可以大大减少我们程序员代码量,也方便学习过其他语言的人上手oc语言

@property有以下几种属性

readwrite 默认

assign 默认

readonly 只读(只有get方法,禁用set方法) 

给setter和getter方法起别名(setter = a:, getter = b)

      atomic  开启多线程变量保护,会消耗一定的资源(非原子性,保证多线程安全)

       nonatomic:禁止多线程变量保护,提高性能 

assign:直接赋值,适用于基本数据类型(非对象类型)

retain:赋值时做内存优化,使用于对象类型

copy:复制一个副本,适用于特殊的对象类型(常用于NSstring)(有NSCoping协议的才可以用copy)

 

assign retain copy的setter方法的内部实现

assign:

@property float price;

内部实现:

- (void)setPrice:(float)price 

 {

       _price = price;

}

getter是:

- (float)price

{

    return _price; 

 

retain:

@property (retain, nonatomic) NSString *company;

内部实现:

- (void)setCompany:(NSString *)company{

      if(_company != company){

        [_company release];

        [company retain];

        _company = company; 

     } 

}

copy:

@property (copy, readwrite, nonatomic) NSString *company;

内部实现:

- (void) setCompany:(NSString *)company{

      if(_company != company){

           [_company release];

           [company copy];

           _company = company; 

      } 

0 0
原创粉丝点击