@property扩号内支持以下几个属性

1,getter=getterName,setter=setterName,设置setter与getter的方法名


2,readwrite,readonly,设置可供访问级别,在不声明的时候 默认是带readwrite参数的 就是 这个变量可以读写.


2,assign,setter方法直接赋值,不进行任何retain操作,为了解决原类型与环循引用问题,assign 只是简单的传递指针。


3,retain,setter方法对参数进行release旧值再retain新值,所有实现都是这个顺序(CC上有相关资料)


4,copy,setter方法进行Copy操作,与retain处理流程一样,先旧值release,再Copy出新的对象,retainCount为1。这是为了减少对上下文的依赖而引入的机制。copy 是创建分配一个新的空间,从原址的内容复制内容过来.


5,nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。锁被加到所属对象实例级。系统默认 是 atomic的 你不声明就意味着是 atomic 效果是,在多线程操作的时候,假如多个线程都会用到这个变量,那么你在读写这个变量的时候 会有一个 lock 和unlock的操作 防止在读写的过程中,变量被其他的线程所改变,导致错误。如果你声明了 nonatomic ,你确认这个变量不会在多线程中用到的话,那么 读写只是简单的返回 没有 lock的动作 效率上就提高了,通常说nonatomic 是提高在非多线程应用中的 读写效率。

posted @ 2010-09-30 10:45  周宏伟  阅读(285)  评论(0编辑  收藏  举报