我应该坚持这个属性[iOS 7]

时间:2014-08-07 07:46:18

标签: objective-c ios7 xcode5

我通过segue将一个对象从xviewController传递给yviewController, 对象obj在xviewController中被初始化为强大的属性。

我将对象传递给yviewController的属性,该属性是同一个类的指针。 当视图控制器消失时,它是否仍指向该地址,或仅将其设置为nil。 问题是,我应该将第二个指针定义为弱指针还是强指针?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,那么它应该是strong(默认值)。当第二个视图控制器被销毁时,ARC会将对象指针分配给nil,删除一个引用,但是您仍然希望在第一个视图控制器中引用该对象。

答案 1 :(得分:0)

正确答案取决于

首先,您必须了解强弱之间的区别。

简而言之,强引用拥有您使用此属性引用的对象。这意味着编译器将确保在强烈引用该对象时不会从内存中删除该对象。如果你有两个强烈指向另一个的对象,并且有一个被删除,那么第二个对象仍将拥有这个对象,因为它拥有它。

弱引用基本上意味着异议并非拥有,它的所有权仍然来自谁具有强引用,因此如果强引用停止存在,弱者将指向nil。如此重复,A对X有强烈的引用,B对X有弱引用,如果A删除了这个引用,B也会丢失它...

所以..回到你的问题,在第二个View控制器中弱或强,它将取决于......第二个视图控制器可见时第一个视图控制器是否有可能破坏对象?如果发生这种情况,您想保留对象的副本吗?如果展位是肯定的,那就把它放好吧。

如果第一个引用无法被销毁,或者您希望在第二个视图控制器中反映第一个对象(更新保留实例)的更新,则弱引用就足够了。