使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)
使用copy: 对NSString
使用retain: 对其他NSObject和其子类

assign就是简单的赋值,不更改引用计数,所以直接使用基础数据

copy是直接拷贝内容,成为一个新的对象。

retain释放旧的对象,将旧对象的值赋给新的对象,并使新的对象的引用计数加1

retain是指针拷贝 copy是分配新的内存属于内容拷贝,在拷贝之前都会释放旧的对象

在ARC中,retain和strong是一致的(声明为强引用);assign和weak是基本一致的(声明为弱引用)

=======弱引用(weak,assign)的出现缘由,以及区别=======================================

弱引用的出现缘由:防止循环应用。

强引用循环:A对象强引用了B对象,B对象也强引用了A。因为都是强引用,也就是无论是A是B都要在对方的引用断了后才能销毁,但要断了引用,就必须对方对象销毁。就会出现这种僵局,为了避免出现这种情况,就应该有一个对象“示弱”,使其为“弱引用”。 weak和assign的区别就是当对象被销毁后,weak会把指针指向的对象置为nil,而assign却不会,所以assign会引起野指针,比较危险。

比较常见的,视图中的父子视图之间的引用:父视图强引用子视图,子视图弱引用父视图。

===atomic与nonatomic====================================================

atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。

转载于:https://www.cnblogs.com/heyuanbo/p/5142588.html

iOS中copy,retain,strong,assign,weak的区别以及使用相关推荐

  1. 关于在ios中使用png与jpg图片的区别

    关于png图片: 1.png有透明通道, jpg没有.png有手机硬解码加速 无损显示效果好 2.png加载速度快, 显示效果好 3.xcode也会对png图片进行优化,而不会对jpg图片进行优化. ...

  2. HTML中粗体strong与b,斜体em与i标签的区别

    1)关于html标签中b和strong两个的区别,我也是今天用到时才注意的,以前都是混着用的,今天工作的时候才注意到这两个标签的区别. 用在网页上,默认情况下它们起的均是加粗字体的作用,二者所不同的是 ...

  3. 【iOS atomic、nonatomic、assign、copy、retain、weak、strong】的定义和区别详解

    一.atomic与nonatomic 1.相同点 都是为对象添加get和set方法 2.不同点 atomic为get方法加了一把安全锁(及原子锁),使得方法get线程安全,执行效率慢 nonatomi ...

  4. iOS 中strong,weak,copy,assign区别

    1:ARC环境下,strong代替retain.weak代替assign 2:weak的作用:在ARC环境下,,所有指向这个对象的weak指针都将被置为nil.这个T特性很有用,相信很多开发者都被指针 ...

  5. iOS学习笔记-retain/assign/strong/weak/copy/mutablecopy/autorelease区别

    readwrite:是可读可写特性,需要生成getter和setter方法: readonly是之都特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变时候使用: alloc ...

  6. copy, retain, assign , readonly , readwrite,strong,weak,nonatomic整理

    copy:建立一个索引计数为1的对象,然后释放旧对象 对NSString 对NSString 它指出,在赋值时使用传入值的一份拷贝.拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协 ...

  7. 关于@property()的那些属性及ARC简介【nonatomic,atomic,assign,retain,strong,weak,copy。】

    @property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy. 其中atomic和nonatomic用来决定编译器生成的gette ...

  8. iOS 5中的strong和weak关键字

    from:http://blog.csdn.net/yhawaii/article/details/7291134 iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性(iOS 5 ...

  9. iOS cop/assign /strong/weak

    1.OC中字符串为什么要用Copy 在iOS开发中,我们在定义一个NSString的时候都会用copy来修饰, @property (nonatomic, copy)NSString *str; 那为 ...

最新文章

  1. 介绍一款比Android原生模拟器还要快的模拟器Genymotion(转)
  2. signature=89b7a6bcfac55abae5ac369dafee29f4,Capecitabine
  3. 67 Airflow配置MySQL数据库和LocalExecutor
  4. 向日葵win10远程linux主机,大神为你细说win10系统使用向日葵远程桌面软件远程的操作办法...
  5. 简明python教程 --C++程序员的视角(二):函数及作用域
  6. Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作...
  7. MySQL 字段内容区分大小写
  8. android显示网络gif图片
  9. JavaScript中的数据类型和数据类型转换
  10. [洛谷5463]小鱼比可爱
  11. html播放优酷链接视频教程,视频教程链接(请将网址复制粘贴到浏览器地址栏查看):...
  12. python 改变图片像素值
  13. 如何快速创建个人网站
  14. AutoVue使用教程:如何在64位Linux上安装AutoVue
  15. Dynamics CRM IFD部署如何更换SSL证书
  16. 宋星:误读数据等于自杀
  17. 南山谷主:面包屑导航是什么意思?对SEO有何作用?
  18. 中国科学技大学2014年数学分析考研试题
  19. solidworks显示无法连接到服务器,SOLIDWORKS Electrical解决方法:无法连接协同服务器...
  20. 百度地图根据经纬度获取该地点所在城市信息

热门文章

  1. mysql主主复制和mha_MySQL第二章主从复制MHA高可用
  2. Docker与容器安全
  3. Docker命令行探秘
  4. python使用codecs模块进行文件操作-读写中英文字符
  5. Linux学习总结(七十四)自动化运维之ansible
  6. [译]Windows 登录时间太长的案例
  7. centos7设置输入密码三次错误锁定账号
  8. iis 在站点中新建虚拟目录站点之后,虚拟目录中的 web.config 与 主站点中的 web.config冲突解决方案...
  9. PHP,mysql,Linux,CI框架学习总结
  10. 风云再起-后IOE时代的Oracle架构变迁与创新-V3