使用ARC,生命周期限定符分配和unsafe_unretained
我对这两个限定符有点困惑…与ARC而不是使用weak
(即如果我需要支持iOS 4),我可以使用unsafe_unretained
失去自动无function…最终的结果似乎是相似的assign
。
- 我可以用
assign
交换unsafe_unretained
吗? - 这些预选赛是同一件事吗?
苹果文档关于这个参数的任何链接都是非常有趣的…我只能在这里find几行
Clang的ARC技术规范详细介绍了限定符是如何工作的。
但是,要回答你的问题: assign
和__unsafe_unretained
不是一回事。 assign
是一个属性属性,告诉编译器如何综合属性的setter实现,而__unsafe_unretained
是一个所有权限定符,告诉ARC如何插入retain
/ release
调用。 但是它们是相关的:当声明一个属性时, assign
意味着__unsafe_unretained
所有权。
在ARC之前, assign
是默认的财产所有权限定词; 但启用ARC后, 可保留对象指针types的默认值strong
。 (对于标量和其他指针types, assign
仍然是默认值。)