@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 是提高在非多线程应用中的 读写效率。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步