gpt4 book ai didi

iphone - UITableView 滚动太远并导致奇怪的事情

转载 作者:行者123 更新时间:2023-12-03 19:17:12 26 4
gpt4 key购买 nike

我有一个 UITableView,当滚动到远处时会弹起包。这也意味着用户可以拖动表格,使其只有一半可见,而主视图的另一半为白色。这会导致我的应用程序出现一些奇怪的行为。我在 AppDelegate 中创建一个数组。在 RootViewController 的 viewDidLoad 中,我获得了对 AppDelegate 的引用并保留它直到应用程序关闭。在 RootViewController 的 cellForRowAtIndexPath 中,我引用 AppDelegate 实例的数组来获取将填充单元格标签的对象。在用户按照上面提到的方式滚动之前,效果很好。一旦发生这种情况,可以在调试器中看到数组中的对象 7(例如)已变成 UICachedDeviceRGBColor。我不知道为什么会发生这种情况。该数组仅在创建应用程序时在 AppDelegate 中分配一次。从那时起它就只能被读取引用。

据我所知,我必须首先单击表中的一行。新 View 被推送,其中也有一个 UITableView。在第二个 View 的 cellForRowAtIndexPath 中,我检查 delegate.array,因为第二个 View 也有对该数组的引用。我立即看到数组中的对象 2 是:

2 : UIDeviceRGBColorSpace 1 1 1 1

这不应该是这样。然后,当我单击返回并再次显示主表时,请执行上述滚动技术以获得奇怪的结果。我滚动表格足以到达 cellForRowAtIndexPath 中的断点,并看到数组已更改。对象二是正确的类型,但现在对象 7 不是正确的类型。

问题是,如果我尝试访问对象 7 并调用我要转换为的类型的属性,该属性当然在 UICachedDeviceRGBColor 上不存在。这是一个“Inavlid”,因此由于内存访问错误,我得到了“EXC_BAD_INSTRUCTION”。

在这种特定条件下,是什么导致数组发生这种变化?或者至少,我该如何防范?

最佳答案

这是在设备上,但看起来我已经弄清楚了。

在 RootViewController 的 didSelectRowAtIndexPath 中,我从 delegate.thearray 中获取了其中一个对象。就在第二个 View 被推送之前,我释放了这个对象。这是错误的,因为我没有分配该对象。删除该行,数组中不再有奇怪的地方。现在一切似乎一切正常。

关于iphone - UITableView 滚动太远并导致奇怪的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/695640/

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