gpt4 book ai didi

objective-c - 对象-C : UIView from Nib being released between willAppear and didAppear

转载 作者:行者123 更新时间:2023-12-03 16:32:30 24 4
gpt4 key购买 nike

我在 Nib 中有一个 View ,它通过以下行链接到我的 View Controller 中的一个属性:

@property (unsafe_unretained, nonatomic) IBOutlet UIView *otherView;

它是 unsafe_unretained,因为我们的目标是 ios 4 设备,但使用的是 ARC。

我们正在崩溃,因为当我们试图显示 otherView 时,它正在被释放,我不太清楚为什么。我在 viewWillAppear 中设置了一个断点,如果我在调试器中执行“po otherView”,我会得到:
<UIView: 0x6fcc880; frame = (0 0; 320 460); autoresize = RM+BM; layer = <CALayer: 0x6fcc8b0>>

我在 viewWillAppear 方法的末尾检查了它,它也仍然存在。但是,如果我在 viewDidAppear 的开头放置一个断点,我会得到:
0x6fcc880 does not appear to point to a valid object.

谁能指出我正确的方向?如果我将属性声明更改为“强”,则不会发生此问题,并且我理解通过将其更改为强,我将保留它(并因此防止它被释放),但我不认为我应该需要这样做吗?

问候,
缺口

最佳答案

您需要在 xib 中的任何 topLevel 对象上具有保留属性( strong | retain )。
enter image description here
在上面的示例中 view1将需要保留属性(property)。 view2不需要保留属性(property),但我通常只是将其保留为保留,因为它不会伤害任何东西。

为什么不需要保留?view2不需要保留属性(property),因为它归 view1 所有以及您拥有的任何引用资料are arbitrary references between objects that do not imply ownership. (苹果,Resource Programming Guide)。但是保留属性(property)也没有什么坏处,只要确保调用 self.view2 = nilviewDidUnload

关于objective-c - 对象-C : UIView from Nib being released between willAppear and didAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10030256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com