Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2697036
  • 博文数量: 877
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5921
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-05 12:25
个人简介

技术的乐趣在于分享,欢迎多多交流,多多沟通。

文章分类

全部博文(877)

文章存档

2021年(2)

2016年(20)

2015年(471)

2014年(358)

2013年(26)

分类: iOS平台

2015-07-02 10:20:59

http://www.cnblogs.com/X-Code/archive/2013/01/17/2865165.html

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; 

      } 

阅读(546) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~