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 是内容拷贝。

原文:http://www.cnblogs.com/langtianya/p/3794735.html

c语言assign用法,object-c语言的nonatomic,assign,copy,retain的区别相关推荐

  1. c语言 raii 用法日志,C 语言实现 RAII

    尽管有许多的争议,但我还是觉得 C++ 中的 RAII 惯用法是个好东西,也是写 C 代码时唯一怀念的 C++ 特性.下面是一些 C 语言实现 RAII 的方法: gcc #define RAII_V ...

  2. c语言cobegin用法,用C语言实现P、V操作

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2.理发师问题:一个理发店有一个入口和一个出口.理发店内有一个可站5 位顾客的站席 区.4 个单人沙发.3 个理发师及其专用理发工具.一个收银台.新来的顾 ...

  3. C语言pop_back用法,【C语言】单链表的所有操作的实现(包括PopBack、PushBack、PopFront、PushFront、Insert)...

    #define _CRT_SECURE_NO_WARNINGS 1 #include using namespace std; //单链表的实现 #include typedef int DataTy ...

  4. c语言 waveout用法,用C语言发声

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 { static double fAngle ; short * Point=(short *)pBuffer; int i ; for (i=0 ; i ...

  5. ES6之Object.assign()用法,Object.assign()到底是浅拷贝还是深拷贝?

    基本用法 Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target). const target = { a: 1 }; const sou ...

  6. c语言 const常量作用,C语言 const常量讲解

    //const的本质 //const本质上是伪常量,无法用于数组初始化以及全局变量初始化 //原因在于const仅仅限定变量无法直接赋值,但是却可以通过指针间接赋值 //例如局部常量在栈区,而不在静态 ...

  7. Object Pascal语言

    Object Pascal语言 控制串由一个或多个控制字符组成,由"#"开头,后面紧跟一个范围在0-255的无符号的整数,用于代表相应的ASCII字符. 下面再列出一些变量声明的例 ...

  8. python语言用法_Python语言-Jinja2用法

    本文主要向大家介绍了Python语言-Jinja2用法,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一:渲染模版要渲染一个模板,通过render_template方法即可.@a ...

  9. c++中string和c语言string用法总结

    实例引出: 这个一个字符变换的题目:需要把输入的含有Q加数字的变为对应的Text+个数的形式: 输入样例为: abddaQ123werQ1234 输出为:abddaText1werText2 我在编写 ...

最新文章

  1. Numpy关于数组的基本使用
  2. 全面学习ORACLE Scheduler特性(5)Schedules调度Programs执行的Jobs
  3. IS-IS的基本概念
  4. Linux 串口调试工具汇总
  5. vba 自动排序_给VBA字典键值排序,并提取需要的数据
  6. 企业数字化转型与中台建设全攻略:什么阶段进行?采用哪些方法?
  7. 苹果电脑如何查看本机IP地址和DNS?
  8. php gmssl,GmSSL是什么
  9. AD Undeclared identifier: GetFontID 问题解决方法
  10. 对ID3算法的理解及其优缺点
  11. 愚人节、物联网、飞鸽与IP
  12. centos7下修改mysql8表名_CentOS7系统下修改mysql8.0版本密码
  13. 《冰河世纪》特效指导罗皓做客【ftrack聊天室】
  14. Mac Xshell 下载 (FinallShell)
  15. python strftime时分秒_python如何把秒换成时分秒
  16. c语言中 指针的研究,C语言中指针的研究与总结
  17. 计算机一级考试PPT部分几分,计算机一级考试PPT幻灯片和最后一题(就是自己输网址)各有多少分啊...
  18. 深度学习 - 其本质是什么?
  19. {‘errcode‘: 47001, ‘errmsg‘: ‘data format error rid} 微信测试号模板消息,参数不对。
  20. Linux驱动开发: 网络设备驱动开发

热门文章

  1. 风控模型师面试准备--技术篇(逻辑回归、决策树、集成学习)
  2. java.lang.NoClassDefFoundError: * : Landroid/support/v7/gridlayout/R$styleable 异常终极解决办法
  3. HTTPS请求实现框架
  4. 分布式系统:SrpingBoot整合Zookeeper和Dubbo的版本匹配问题
  5. excel保存超过15位数据不变科学计数法的方法
  6. UI控件Telerik UI for WinForms发布R1 2019|附下载
  7. NuGet version
  8. bootstrap table 的简单Demo
  9. Rejection sampling - 直观解释
  10. php 之fsockopen(转)