【转】Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)...
assign:指定setter方法用简单的赋值,这是默认操作。你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。
assign:简单赋值,不更改索引计数(Reference Counting).使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)
retain:指定retain应该在后面的对象上调用,前一个值发送一条release消息。你可以想象一个NSString实例,它是一个对象,而且你可能想要retain它。
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 ,使用retain: 对其他NSObject和其子类 ,retain,是说明该属性在赋值的时候,先release之前的值,然后再赋新值给属性,引用再加1。
copy:指定应该使用对象的副本(深度复制),前一个值发送一条release消息。基本上像retain,但是没有增加引用计数,是分配一块新的内存来放置它。copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。copy:建立一个索引计数为1的对象,然后释放旧对象,copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。
readonly:将只生成getter方法而不生成setter方法(getter方法没有get前缀)。
readwrite:默认属性,将生成不带额外参数的getter和setter方法(setter方法只有一个参数)。
atomic:对于对象的默认属性,就是setter/getter生成的方法是一个原子操作。如果有多个线程同时调用setter的话,不会出现某一个线程执行setter全部语句之前,另一个线程开始执行setter的情况,相关于方法头尾加了锁一样。
nonatomic:不保证setter/getter的原子性,多线程情况下数据可能会有问题。nonatomic,非原子性访问,不加同步,多线程并发访问会提高性能。先释放原先变量,再将新变量 retain然后赋值;
注意,如果不加此属性,则默认是两个访问方法都为原子型事务访问。
转载于:https://www.cnblogs.com/jacktu/archive/2011/09/28/2194194.html
【转】Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)...相关推荐
- assign/retain/copy各内存管理特性的差异
MRC下各内存管理特性 assign特性 当数据类型为int.float等原生类型时,可以使用assign,否则可能导致内存泄露.例如当使用malloc分配了一块内存,并把它的地址赋值给了指针a,后来 ...
- assign, retain, copy, weak, strong
一.assign, retain, copy 的区别(引用计数 RC reference count) 参考:IOS基础:retain,copy,assign及autorelease 1. 假设你用m ...
- Objective-c属性修饰关键字(assign retain copy strong weak)
一.线程相关: [atomic/nonatomic] (1)atomic[默认属性]:OC使用的一种线程保护技术,是防止在写未完成的时候被另外一个线程读取,造成数据错误.而这种机制是耗费系统资源的,所 ...
- iOS属性之assign,copy,retain的区别以及weak和strong的区别
为什么80%的码农都做不了架构师?>>> @property (nonatomic, assign) NSString *title; 什么是assign,copy,retai ...
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString 对NSString 它指出,在赋值时使用传入值的一份拷贝.拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协 ...
- 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】
@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的gette ...
- retain/copy/assign区别
转自:http://blog.csdn.net/pjk1129/article/details/6457048#comments 在iphone程序中,属性合成中的retain/copy/assign ...
- (ios实战):retain,copy,assign及autorelease ,strong,weak
一,retain, copy, assign区别 1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b.此时a ...
- iOS中assign、copy 、retain等关键字的含义
assign: 简单赋值,不更改索引计数 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立 ...
最新文章
- 这个 MySQL bug 99% 的人会踩坑!
- mac idea用自带的maven还是_免费版的 IDEA 为啥不能使用 Tomcat ?
- python判断值是否在excel中_python接口自动化测试之根据excel中的期望结果是否存在于请求返回的响应值中来判断用例是否执行成功...
- Redis在windows下的配置
- 对xml操作的主要方法[轉]
- java监听剪贴板_在java中实现windows剪贴板监视
- 根据录入的计算公式计算_超全的铝材重量计算公式
- JavaScript - 测试 jQuery
- 听飞狐聊JavaScript设计模式系列12
- live2dmesh渲染优先级_如何渲染Live2D模型
- 明翰英语教学系列之PTE与多邻国篇V1.1
- 极小曲面壳体的静力学分析(ABAQUS)
- 音频特征(2):时域图、频谱图、语谱图(时频谱图)
- matlab contourf去掉等高线,MATLAB 等高线边界问题:怎么让等高线在边界外不显示...
- 哪家python培训最好
- 简要分析“荒野乱斗”基本元素
- 清华大学MOOC《操作系统》第1讲:“操作系统概述”总结(转)
- flash actionscript MovieClip(电影剪辑)控制
- arduino编乐谱_基于Arduino的电子音乐发声器设计
- 4.3实训任务 Zookeeper安装与配置
热门文章
- 化工企业数据分析报表系统项目之销售模块分析
- c语言如何写地图,自己用C语言写的扫雷地图
- spring中怎么访问MySQL过程_DB数据源之SpringBoot+MyBatis踏坑过程(六)mysql中查看连接,配置连接数量...
- dom4j获取指定节点值_XML解析之DOM4j以及XPATH技术
- n维椭球体积公式_加速度计 椭球校准 (最小二乘法 椭球拟合)
- axios框架里面如何使用get,post,通用ajax方法请求。
- mysql my.ini配置优化_求高手帮我优化一下 mysql 的 my.ini
- 450g吐司烘烤温度_这不可能是吐司!不,是的
- 笔记本电脑如何保养_锂电池保养技术 锂电池使用注意事项 锂电池技术培训
- 我的世界服务器开启就停止运行,我的世界怎么停止时间