黑马程序员技术交流社区

标题: OC中的点语法 [打印本页]

作者: zhou_xingyu    时间: 2015-8-2 10:38
标题: OC中的点语法
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;

      }

}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2