object-c语言的nonatomic,assign,copy,retain的区别
nonatomic:
非原子性访问,不加同步,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。
(atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。)
assign:
简单赋值,不更改索引计数
对基础数据类型 (NSInteger)和C数据类型(int, float, double, char, 等)
copy:
建立一个索引计数为1的对象,然后释放旧对象
对NSString
retain:
释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1
对其他NSObject和其子类
copy与retain的区别:
copy是创建一个新对象,retain是创建一个指针,引用对象计数加1。
eg: 一个NSString 对象,地址为0×1111 ,内容为@”STR”
Copy 到另外一个NSString 之后,地址为0×2222 ,内容相同,新的对象retain为1 ,旧有对象没有变化
retain 到另外一个NSString 之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1
也就是说,retain 是指针拷贝,copy 是内容拷贝。
object-c语言的nonatomic,assign,copy,retain的区别相关推荐
- iOS assign copy retain...含义
assign: 简单赋值,不更改索引计数 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立 ...
- 创建对象时引用的关键字,assign,copy,retain
创建对象时引用的关键字: assign: 简单赋值,不更改索引计数(强引用) copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对 ...
- copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理
copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString 对NSString 它指出,在赋值时使用传入值的一份拷贝.拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协 ...
- atomic与nonatomic,assign,copy与retain的定义和区别
atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作. atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全. 在多线程环境 ...
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作. atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全 ...
- c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别
nonatomic: 非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问. (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写 ...
- OC指示符assign、atomic、nonatomic、copy、retain、strong、week的解释
在使用@property定义property时可以在@property与类型之间用括号添加一些额外的指示符,常用的指示符有assign.atomic.nonatomic.copy.retain.str ...
- nonatomic,assign,copy,retain的区别
nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问. (atomic是Objc使用的一 ...
- iOS属性之assign,copy,retain的区别以及weak和strong的区别
为什么80%的码农都做不了架构师?>>> @property (nonatomic, assign) NSString *title; 什么是assign,copy,retai ...
最新文章
- 生成对抗网络gan原理_中国首个“芯片大学”即将落地;生成对抗网络(GAN)的数学原理全解...
- 腾讯offer-众里寻他千百度
- keyshot环境素材文件_快速学会keyshot基础渲染的步骤
- 机器学习之朴素贝叶斯算法的推理及相关知识总结
- python alpha量化交易软件_2019AI量化交易教程视频 AI量化交易模型教程 alpha量化选股模型交易系统 CTA型量化策略教程...
- eeglab导出图片
- TinyPNG批量压缩工具脚本Python
- FlexBuilder 插件
- EXCEL,如何进行查找,单条件和多条件查询
- 一个三非渣本的安卓秋招之路
- 健身服务公司iFIT赴美上市,64亿美元估值中藏着“喜”与“忧”?
- 云原生数据湖以存储、计算、数据管理等能力通过信通院评测认证
- Apache 502 Bad Gateway
- DCMTK、ITK、VTK读取dicom信息
- CMWAP 和 CMNET
- X-Powered-by
- 为什么一群人之中,蚊子就“盯”着你?为你揭秘“蚊子”的真相!
- JavaFX桌面应用开发-菜单栏-MenuBar、Menu 、MenuItem
- 二、UNO项目Demo创建时遇到的问题
- Delphi TStringGrid 类(1)
热门文章
- 人民日报三问人工智能,给法律制度带来哪些挑战?
- 不要再被 Python 洗脑了!!
- 写给大忙人看的死锁详解
- SDWebImage开源库阅读分析(全)
- 在Android工程中加入AIDL文件时,gen目录生成的文件报错-问题解决
- repmgr 4.3 发布,PostgreSQL 复制与故障转移管理工具
- 阿里云发布Quick BIV3.0,人人都能轻松进行在线数据分析
- javascript中while循环、do....while与for循环的用法和区别
- com.sun.crypto.provider.SunJCE
- 手机应用:非功能需求 Check List