使用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仍然是默认值。)