通常在声明一些成员变量时会看到如下声明方式:

@property (参数1,参数2) 类型 名字;

这里我们主要分析在括号中放入的参数,主要有以下三种:

setter/getter方法(assign/retain/copy)
读写属性(readwrite/readonly)
atomicity(nonatomic)

其中各参数说明如下:

assign
默认类型,setter方法直接赋值,而不进行retain操作
retain
setter方法对参数进行release旧值,再retain新值,如下代码:

  1. -(void) setObj:(ClassX*) value  
  2. {  
  3.          if (obj != value)  
  4.          {  
  5.                    [obj release];  
  6.                    obj = [value retain];  
  7.          }  

copy
setter方法进行Copy操作,与retain一样
nonatomic
禁止多线程,变量保护,提高性能,

如果是多线程应用应该是atomic.


readwrite
产生setter\getter方法
readonly
只产生简单的getter,没有setter。

 

参考:

http://yarin.blog.51cto.com/1130898/416353

相关文章:

  • 2022-12-23
  • 2021-06-13
  • 2021-07-16
  • 2022-12-23
  • 2021-06-15
  • 2021-07-07
  • 2021-08-11
  • 2022-12-23
猜你喜欢
  • 2021-10-22
  • 2022-12-23
  • 2021-10-15
  • 2022-12-23
  • 2022-12-23
  • 2021-05-23
  • 2022-12-23
相关资源
相似解决方案