【发布时间】:2013-02-03 04:22:26
【问题描述】:
unsafe_unretained 和weak and assign 有什么区别? 非常感谢。
【问题讨论】:
标签: objective-c
unsafe_unretained 和weak and assign 有什么区别? 非常感谢。
【问题讨论】:
标签: objective-c
来自文档:
weak 指定一个不使被引用对象保持活动状态的引用。当没有强引用时,弱引用设置为 nil 对象的引用。
Assign 与 weak 相同,只是它不会将指向已释放实例的指针设置为 nil,从而可能留下悬空指针。 Assign 和 unsafe_unretained 用法相同。
编辑:哦,天哪,我似乎严重混淆了财产属性和所有权限定符;我原来的答案是正确的。 Assign 和 unsafe_unretained 都是属性属性,它们暗示其支持实例变量的所有权限定符 __unsafe_unretained。使用unsafe_unretained 向后兼容iOS 4,否则使用assign。
【讨论】: