2

可能重复:
强(在 LLVM 中)和保留(在 GCC 中)有什么区别?

我可以在任何地方看到我们可以在最新的对象 c 编程中使用强属性而不是保留。但是,我想知道strong和retain之间有多大区别,strong比retain有什么额外的优势,所以Apple发布了strong。

谢谢!

4

1 回答 1

2

它完全符合 ARC 和非 ARC 项目的工作方式的语义(afaik)。苹果希望每个人都使用 ARC,并且正在朝着这个方向努力。

在非 ARC 项目中,“强”将充当“保留”。在 ARC 项目中,如果 clang 没有标记错误(我不使用 ARC),“保留”可能会起作用,但描述中有一个微妙之处。

Retain 说 - 我坚持这个对象,直到我准备好释放它,strong 说(嘿 ARC 将其视为保留对象,并在我的 dealloc 方法中插入一些生成的代码,以便在自动释放池耗尽时释放)。

据我所知,这是唯一的区别,它是概念上的,如果你在快乐的 ARC 土地上,你不应该真正关心,除非它坏了:(

于 2012-10-21T10:49:44.917 回答