iOS中copy,retain,strong,assign,weak的区别以及使用
使用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的区别以及使用相关推荐
- 关于在ios中使用png与jpg图片的区别
关于png图片: 1.png有透明通道, jpg没有.png有手机硬解码加速 无损显示效果好 2.png加载速度快, 显示效果好 3.xcode也会对png图片进行优化,而不会对jpg图片进行优化. ...
- HTML中粗体strong与b,斜体em与i标签的区别
1)关于html标签中b和strong两个的区别,我也是今天用到时才注意的,以前都是混着用的,今天工作的时候才注意到这两个标签的区别. 用在网页上,默认情况下它们起的均是加粗字体的作用,二者所不同的是 ...
- 【iOS atomic、nonatomic、assign、copy、retain、weak、strong】的定义和区别详解
一.atomic与nonatomic 1.相同点 都是为对象添加get和set方法 2.不同点 atomic为get方法加了一把安全锁(及原子锁),使得方法get线程安全,执行效率慢 nonatomi ...
- iOS 中strong,weak,copy,assign区别
1:ARC环境下,strong代替retain.weak代替assign 2:weak的作用:在ARC环境下,,所有指向这个对象的weak指针都将被置为nil.这个T特性很有用,相信很多开发者都被指针 ...
- iOS学习笔记-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
readwrite:是可读可写特性,需要生成getter和setter方法: readonly是之都特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变时候使用: alloc ...
- 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 ...
- iOS 5中的strong和weak关键字
from:http://blog.csdn.net/yhawaii/article/details/7291134 iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性(iOS 5 ...
- iOS cop/assign /strong/weak
1.OC中字符串为什么要用Copy 在iOS开发中,我们在定义一个NSString的时候都会用copy来修饰, @property (nonatomic, copy)NSString *str; 那为 ...
最新文章
- 介绍一款比Android原生模拟器还要快的模拟器Genymotion(转)
- signature=89b7a6bcfac55abae5ac369dafee29f4,Capecitabine
- 67 Airflow配置MySQL数据库和LocalExecutor
- 向日葵win10远程linux主机,大神为你细说win10系统使用向日葵远程桌面软件远程的操作办法...
- 简明python教程 --C++程序员的视角(二):函数及作用域
- Objective-C ,ios,iphone开发基础:ios数据库(The SQLite Database),使用终端进行简单的数据库操作...
- MySQL 字段内容区分大小写
- android显示网络gif图片
- JavaScript中的数据类型和数据类型转换
- [洛谷5463]小鱼比可爱
- html播放优酷链接视频教程,视频教程链接(请将网址复制粘贴到浏览器地址栏查看):...
- python 改变图片像素值
- 如何快速创建个人网站
- AutoVue使用教程:如何在64位Linux上安装AutoVue
- Dynamics CRM IFD部署如何更换SSL证书
- 宋星:误读数据等于自杀
- 南山谷主:面包屑导航是什么意思?对SEO有何作用?
- 中国科学技大学2014年数学分析考研试题
- solidworks显示无法连接到服务器,SOLIDWORKS Electrical解决方法:无法连接协同服务器...
- 百度地图根据经纬度获取该地点所在城市信息
热门文章
- mysql主主复制和mha_MySQL第二章主从复制MHA高可用
- Docker与容器安全
- Docker命令行探秘
- python使用codecs模块进行文件操作-读写中英文字符
- Linux学习总结(七十四)自动化运维之ansible
- [译]Windows 登录时间太长的案例
- centos7设置输入密码三次错误锁定账号
- iis 在站点中新建虚拟目录站点之后,虚拟目录中的 web.config 与 主站点中的 web.config冲突解决方案...
- PHP,mysql,Linux,CI框架学习总结
- 风云再起-后IOE时代的Oracle架构变迁与创新-V3