黑马程序员技术交流社区

标题: 笔记3 [打印本页]

作者: 15132876050    时间: 2015-8-20 20:30
标题: 笔记3
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;

       }

}

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