gpt4 book ai didi

iphone - 应用程序在同一行的第二次选择时崩溃

转载 作者:行者123 更新时间:2023-12-03 18:06:10 24 4
gpt4 key购买 nike

我正在开发的 iPhone 核心数据应用程序遇到了问题。我有一个列出对象的表。如果我选择这些对象之一,我会转到一个新的 ViewController,它会显示该对象的详细信息。

在详细 View 中,我有一个后退按钮,可带我返回主 ListView 。

我可以选择任意数量的行,它会显示每行的详细 View 。但是,如果我尝试选择已选择的行,则会崩溃并显示

Program received signal: “EXC_BAD_ACCESS”.

我添加了一些断点并尝试追踪这一点,并在我的 tableView cellForRowAtIndexPath 方法中找到了以下内容...

当我执行一个操作时,第一次通过每个对象MyEntity *thingamy = [fetchedResultsController objectAtIndexPath:indexPath]thingamy 有效并设置为有效的 thingamy。在 gdb 中,我可以在此时设置断点并执行

po thingamy and I get the expected output.

但是,第二次我选择特定行(例如选择第 0 行,返回,再次选择第 0 行)时,thingamy 设置不正确。

我可以查看任意数量的其他行,但是一旦我尝试选择一行,我就已经查看了发生这种情况的详细信息。

如果我设置了断点,并且在设置断点后尝试执行 po thingamy,则会得到以下结果:

Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x00000020 0x92ca3ed7 in objc_msgSend ()

知道为什么 fetchedResultsController 在第一次调用时返回有效对象,但在第二次调用时不返回吗?

更新

几天后,我确信 fetchedResultsController 被释放不是问题。我启用了 NSZombieEnabled 模式,但那里什么也没有。

此外,我可以从 fetchedREsultsController 获取其他对象,但不是我已经访问过的对象。

例如,我可以得到[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 并在我的下一个 View 中显示它。

当我返回并返回到父 View 时,我可以在Section:1中的indexPathForRow:0处获取对象并显示它。

再次回到开头,我尝试在Section:0中获取indexPathForRow:0,但它因EXC_BAD_ACCESS而崩溃。

在一个有 100 行的表中,我可以获取每一行一次,但是任何获取同一行两次的尝试都会崩溃,即使这些尝试是一个接一个的。

最佳答案

我在使用 NSFetchedResultsController 时遇到了这个问题。我通过turning on NSZombieEnabled in Xcode解决了它。就我而言,事实证明我过度释放了 NSFetchedResultsController。

我第一次加载数据时它起作用了,但后来我在没有意识到的情况下释放了它。下一次,我发布了已经发布的同一个实例,它会崩溃。

如果您仍然遇到问题,请发布您的 NSFetchedResultsController 初始化代码。

关于iphone - 应用程序在同一行的第二次选择时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096653/

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