6

我知道有很多关于'强'与'弱'的文字。但是所有文档都表示,两者都是100%同义词,您可以使用'strong'代替'retain',反之亦然。强与保留在ARC

我的问题是:如果它们相同,苹果为什么会引入新的'strong'关键字?我已经在一个示例项目中测试了这两个属性,并且“strong”和“retain”属性属性看起来都是一样的。难道你不认为如果苹果引入了“强”属性,它应该禁止使用“保留”属性?或者我错过了什么?

+1

http://stackoverflow.com/questions/8927727/objective-c-arc-strong-vs-retain-and-weak-vs-assign – 2015-03-03 11:14:36

+1

'strong'和'retain'几乎是一样的,但因为在ARC中你不需要担心_retaining-releasing_对象,对于ARC中的属性来说,'strong'在逻辑上更合适......就像在MRR中,'retain'与'release'或' autorelease',在ARC环境中,'strong'没有这种相反的等价物,这就是为什么在ARC中使用'strong'而不是'retain'更符合逻辑的原因;如果这对你有意义。 – holex 2015-03-03 11:17:55

+0

@Katoch我已经读过它指向同样的东西强=保留,我明白。但问题是,为什么要在开发人员心中产生怀疑(尽管我总是使用强大的),因为保留与手动内存管理有关,他们应该完全停止在ARC项目中使用保留,为什么它仍然在ARC中占据一席之地? – IOSCODER 2015-03-03 11:25:00

回答

9

retain是预ARC会留下的剩余空间,您可以根据是否希望它在内存中挂起来增加/减少对象retain count

很明显,使用ARC时,您不必再担心这一点,我怀疑retain可能仅仅是为了易于使用,为更有经验的Objective-C程序员使用。

弧线最流行的关键字是:(strong, weak, nonatomic, readonly, copy)

+0

是的最后我认为我们可以给这个解释。 – IOSCODER 2015-03-03 15:33:32