我对这两个资格赛有点困惑......
使用ARC而不是使用weak
(即如果我需要支持iOS 4),我可以使用unsafe_unretained
丢失auto-nil功能......最终结果似乎与assign
类似。
unsafe_unretained
交换assign
吗? 关于这个论点的Apple文档的任何链接都会非常有趣......我只能找到几行here
答案 0 :(得分:16)
Clang的technical specification of ARC详细介绍了限定符的工作原理。
但是,要回答你的问题:assign
和__unsafe_unretained
不是一回事。 assign
是一个属性属性,告诉编译器如何合成属性的setter实现,而__unsafe_unretained
是一个所有权限定符,告诉ARC如何插入retain
/ release
调用。但它们是相关的:在声明属性时,assign
暗示__unsafe_unretained
所有权。
在ARC之前,assign
是默认的属性所有权限定符;但启用ARC后,可保留对象指针类型的默认值为strong
。 (对于标量和其他指针类型,assign
仍然是默认值。)