黑马程序员技术交流社区

标题: @property参数 [打印本页]

作者: 安若曦    时间: 2015-9-14 17:45
标题: @property参数
这是我整理的@property参数的一些用法什么的,方便自己记忆和学习,分享给大家
  1. @property参数

  2. /*

  3. @property 4.4之前

  4. 1)@property + 手动实现

  5. 2)@property int age; + @synthesize age;//get和set方法的声明和实现都帮我们做了

  6. 3)@property int age; +@synthesize age = _b;



  7. @property 4.4之后(增强)

  8. .h

  9. @property int age;

  10. 1)生成_age(是私有的实例变量)

  11. 2)生成_age的set和get方法的声明

  12. 3)实现_age的set和get方法



  13. @property参数

  14.   三类  7个



  15. 原子性         atomic        nonatomic

  16. 读写           readwrite     readonly

  17. set方法处理     assign        retain       copy



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

  19.    

  20.     nonatomic:高性能,一般使用这个

  21.     atomic:低性能,默认



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



  23.     readonly:只读,只会生成getter的声明和实现

  24.     readwrite:默认的,同时生成setter 和 getter的声明和实现



  25. 3)set 和 get 方法名称

  26.      1> assign  直接赋值

  27.          //什么时候使用assign?

  28.           //实例变量是基本数据类型的时候

  29. -(void)setCar:(Car*) car{

  30.             _car = car;

  31. }

  32. 验证:assign



  33.     2> retain  release旧值  retain新值(适用于OC对象类型)

  34.      //什么时候使用retain ?  在一个类中有关联其他对象的时候,这个对   象的就需要retain

  35. //格式:@property (nonatomic,retain)

  36. -(void)setCar:(Car*) car{

  37.        if(_car != car){

  38.          [_car release];

  39.          -car = [car retain];

  40. }

  41. }

  42.    

  43.    3>  修改set和get方法的名称,主要用于BOOL类型。因为返回布尔类型的方法名一般以is开头,修改名称一般用在布尔类型中的gette

  44.     @property (nonatomic,assign,setter = isVip:,getter = isVip)BOOL vip;



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

  46.          把 [p vip]---------->[p isVip]



  47. */
复制代码



作者: TTsu    时间: 2015-9-14 23:43
mark一下..




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