iOS学习(1)
来源:互联网 发布:川崎机器人编程手册 编辑:程序博客网 时间:2024/05/29 11:16
什么情况使用 weak 关键字,相比 assign 有什么不同
什么情况使用 weak 关键字?
在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性
自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。在下文也有论述:《IBOutlet连出来的视图属性为什么可以被设置成weak?》
不同点:
weak
此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。此特质同assign类似, 然而在属性所指的对象遭到摧毁时,属性值也会清空(nil out)。 而assign
的“设置方法”只会执行针对“纯量类型” (scalar type,例如 CGFloat 或 NSlnteger 等)的简单赋值操作。assigin 可以用非 OC 对象,而 weak 必须用于 OC 对象(*)
0 0
- iOS学习(1)
- IOS学习笔记 (1)
- IOS 学习记录(1)
- iOS NSURLSession 学习(1)
- IOS-学习笔记(1)
- iOS-学习笔记(1)
- 向iOS进军(1)-- 如何学习iOS?
- IOS开发学习(1)-IOS应用程序周期
- IOS学习(1)— IOS默认工程结构
- 【学习笔记】IOS(1)之UIAlertView
- iOS学习笔记5-UIViewController(1)
- ios游戏开发--cocos2d学习(1)
- IOS开发学习(1 资源)
- iOS导航控制器学习笔记(1)
- iOS学习笔记(1)UILable详解
- [iOS]CoreText 学习笔记(1)
- IOS控件学习之UIScrollView(1)
- ios学习之UIWebView(1)
- PorterDuff及Xfermode详解
- [笔记][Java7并发编程实战手册]4.3 创建固定的线程执行器newFixedThreadPool线程池
- Java线程状态知识点
- python--利用有道网址编写一个翻译句子的程序
- IOS启动动流程
- iOS学习(1)
- 基于node-red工具实现自定义节点
- iOS应用架构谈 网络层设计方案
- 沉默的阿福
- java的IO之字符流字节流
- 使用Docker部署Spark集群
- 栈的链式存储结构
- 分而治之
- Java volatile 关键字理解