1:ARC环境下,strong代替retain.weak代替assign
2:weak的作用:在ARC环境下,,所有指向这个对象的weak指针都将被置为nil。这个T特性很有用,相信很多开发者都被指针指向已释放的对象所造成的EXC_BAD_ACCESS困扰过,使用ARC以后,不论是strong还是weak类型的指针,都不会再指向一个已经销毁的对象,从根本上解决了意外释放导致的crash。

3:assign的作用:简单赋值,不改变引用计数,对基础数据类型 (例如NSInteger,CGFloat)和C数据类型(int, float, double, char, 等) 适用简单数据类型 
4:copy的作用:建立一个索引计数为1 的对象,然后释放旧对象 
5:strong的作用:在ARC环境下,只要某一对象被一个strong指针指向,该对象就不会被销毁。如果对象没有被任何strong指针指向,那么就会被销毁。在默认情况下,所有的实例变量和局部变量都是strong类型的。可以说strong类型的指针在行为上跟非ARC下得retain是比较相似的

6:retain的作用:在非ARC时代,你需要自己retain一个想要保持的对象,ARC环境下就不需要了。现在唯一要做的就是用一个指针指向这个对象,只要指针没有被重置为空,对象就会一直在堆上。当指针指向新值的时候,原来的对象就会被release一次。这对实例变量,sunthesize的变量或者是局部变量都是实用的。

基本上:

NSString类用copy,控件类用weak,,复杂数据类的用strong,数字类,比如INUIgter,nsinter,cgreck这些用assign

特别说明一下,在xib/SB拖的控件,连接到代码建议使用weak。系统原生创建的也是(weak, nonatomic)。不要去更改了,知道为啥不?因为控件拖到xib/SB后,系统自动为其赋了strong,所以拖到代码就用weak就行了。不信你右键xib/SB ->在XML格式下查看就什么都明白了

如果一个对象在某段时间中反复加载,而你又不希望每次加载都要重新alloc 的话,那就strong,strong 保证对此对象保持一个强引用,对于这个对象,只要有1个strong引用的话,那它就不会 释放,当然多个strong同时作用于它也不会释放。

如果一个对象在某段时间只会加载一次,并且加载之后确定不再使用了,那就可以使用weak,这样当其他原因导致引用计数减1(比如 removefromsuperview)的时候,此对象就自动释放了。无需再在delloc 里面再release一次,但你要保证释放之后确实不再使用此对象,否则将导致错误

其实strong和retain的作用有些像,只不过strong 和weak是在arc里面引入的,他俩算是一对儿, 对应关系有点类似 retain 和assign

iOS 中strong,weak,copy,assign区别相关推荐

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

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

  2. retain/copy/assign区别

    转自:http://blog.csdn.net/pjk1129/article/details/6457048#comments 在iphone程序中,属性合成中的retain/copy/assign ...

  3. iOS strong和copy的区别

    级别: ★☆☆☆☆ 标签:「iOS」「NSString」「strong和copy」 作者: MrLiuQ 在iOS开发中,几乎每天都会遇到NSString属性的声明, 在ARC内存管理机制下, NSS ...

  4. 关于iOS中MVC和MVVM的区别和联系

    MVC 的历史 MVC,全称是 Model View Controller,是模型 (model)-视图(view)-控制器 (controller) 的缩写.它表示的是一种常见的客户端软件开发框架. ...

  5. iOS开发-retain/assign/strong/weak/copy/mutablecopy/autorelease区别

    依旧本着尊重原创和劳动者的原则,将地址先贴在前面: http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html,作者Nonato 以下内 ...

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

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

  7. retain、strong、weak、assign区别

    1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b.此时a 和b指向同一块内存,请问当a不再需要这块内存,能 ...

  8. ios中strong和weak的解释理解

    来自stackoverflow解释的挺有意思的 Imagine our object is a dog, and that the dog wants to run away (be dealloca ...

  9. 关于IOS delegate的weak和assign 探讨

    在使用IOS的别人写的SDK时,发现定义的delegate都是assign修饰的,相信很多人也会和我一样刚开始表示很不解. 1.delegate为什么用weak来修饰? delegate 之所以用we ...

最新文章

  1. 多线程批量拆分List导入数据库
  2. 【牛客每日一题】tokitsukaze and Soldier 题目精讲 贪心、优先队列、堆
  3. HALCON双目三维重建实验
  4. 加薪方式的真相!你是哪一种?
  5. mathematica 可编辑pdf_Mathematica学习笔记[1]
  6. 乐在其中设计模式(C#) - 提供者模式(Provider Pattern)
  7. java 整数变负数_一文帮你读懂Java整数的存储原理
  8. 基于Spring安全角色的访问授权示例
  9. MIPS 通用寄存器 + 指令
  10. 科比职业生涯数据分析
  11. 微信App支付接入步骤支付中前后端交互流程
  12. 计算机软件高级证书试题,高级程序员认证考试经验总结
  13. linux sd卡 驱动程序,详解linux 驱动编写(sd卡驱动)
  14. 错误C1083无法打开预编译头文件: “Debug\XXX.pch”: No such file or directory 的解决方法
  15. SAP中利用标准成本报表计算成品人工成本及组成实例
  16. springBoot启动错误:Field categoryMapper in xxx.xxx.service.impl.CategoryServiceImpl required a bean of
  17. 关于纯前端excel上传、下载功能
  18. 【Electron】 NSIS 打包 Electron 生成exe安装包
  19. 国际象棋AI(三)---评估
  20. 03【若依框架解读】Tree树形结构的控制(菜单,部门)

热门文章

  1. 实战SSM_O2O商铺_09【商铺注册】DTO之ShopExecution的实现
  2. html在线压缩tar.gz源码,c50_melp.tar.gz美国2400语音压缩编码算法,文件…
  3. r k-means 分类结果_R语言信用评分卡:数据分箱(binning)
  4. 使用Retrofit时,对参数进行加密
  5. Android的Application的生命周期方法
  6. QT教程1:ubuntu18.04安装QT5
  7. 监控服务器已断开正在自动重连,远程服务器已断开与发送连接器的连接
  8. 半潜式平台及其动力定位系统
  9. java占位符填充_实现java中的占位符
  10. matconvnet中使用fastrcnn遇到的问题