A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhuozhuo 中级黑马   /  2015-9-17 23:01  /  693 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

@property 4.4之前
  1)@property + 手动实现
  2)@property int age; + @synthesize age;//get和set方法的声明和实现都帮我们做了
  3)@property int age; +@synthesize age = _b;

  @property 4.4之后(增强)
  .h
  @property int age;
  1)生成_age(是私有的实例变量)
  2)生成_age的set和get方法的声明
  3)实现_age的set和get方法

  @property参数
   三类  7个

  原子性         atomic        nonatomic
  读写           readwrite     readonly
  set方法处理     assign        retain       copy

  1)多线程管理(苹果在一定程度上屏蔽了多线程操作)

     nonatomic:高性能,一般使用这个
     atomic:低性能,默认

2)是否要生成set方法(若为只读属性,则不生成)

     readonly:只读,只会生成getter的声明和实现
     readwrite:默认的,同时生成setter 和 getter的声明和实现

  3)set 和 get 方法名称
      1> assign  直接赋值
          //什么时候使用assign?
           //实例变量是基本数据类型的时候
  -(void)setCar:(Car*) car{
             _car = car;
  }
  验证:assign

     2> retain  release旧值  retain新值(适用于OC对象类型)
      //什么时候使用retain ?  在一个类中有关联其他对象的时候,这个对   象的就需要retain
  //格式:@property (nonatomic,retain)
  -(void)setCar:(Car*) car{
        if(_car != car){
          [_car release];
          -car = [car retain];
  }
  }

    3>  修改set和get方法的名称,主要用于BOOL类型。因为返回布尔类型的方法名一般以is开头,修改名称一般用在布尔类型中的gette
     @property (nonatomic,assign,setter = isVip:,getter = isVip)BOOL vip;

     相当于把 [p setVip: ]----->[p isVip: ]
          把 [p vip]---------->[p isVip]

  */

1 个回复

倒序浏览
真是不错哦!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马