ios - AppDelegate 类声明中的 EXC_BAD_ACCESS

标签 ios iphone swift uiviewcontroller uinavigationcontroller

我在应用程序中进行查询时遇到了 EXC_BAD_ACCESS 错误(代码为 EXC_I386_GPFLT)的问题。我无法找到有关此问题的太多信息,因为我编写的代码中没有一行被指出是罪魁祸首。错误发生在行

class AppDelegate: UIResponder, UIApplicationDelegate {

这根本不是我写的。当我编写的任何内容都被显示为不正确时,我不确定如何确定什么是错误访问。

为了更全面地看待问题,

我有一个包含导航 Controller 的 Storyboard,该 Controller 有一个 ViewController 作为其 Root View Controller 。 ViewController 有一个 TableView ,当选择一个单元格时,它会转到另一个 ViewController。然后,该 ViewController 可以通过点击手势 Segue 跳转到第三个 ViewController。第三个 Controller 是导航 Controller 的委托(delegate),我将其设置为第二个 ViewController 的prepareForSegue 方法中的委托(delegate),

var dvc = segue.destinationViewController as BlockingViewController
self.navigationController!.delegate = dvc

我在尝试禁用导航 Controller 自动创建的 InteractivePopoverGestureRecognizer 时遇到了此问题。为此,我将以下代码添加到第二个和第三个 ViewController 的 viewDidLoad 方法中:

var barItem: UIBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "backButtonPressed")

self.navigationItem.leftBarButtonItem = barItem

并创建了一个 backButtonPressed 方法:

func backButtonPressed() {
    self.navigationController?.popViewControllerAnimated(true)
}

当我执行以下操作序列时,会发生错误:

VC1 -> VC2 -> VC3 -> VC2 -> VC1

当我执行以下操作序列时,不会发生错误:

VC1 -> VC2 -> VC1

所以 VC3 中一定发生了某些事情导致了这个问题。我唯一能想到的是,我将其设置为导航 Controller 的委托(delegate),这让我想知道它是否尝试在从 VC2 -> VC1 的转场期间访问委托(delegate),这会导致错误,因为delegate 现在为零。

这可能是问题所在吗?如果没有,任何有关可能出现问题的见解都会非常有帮助。

编辑:我在没有设置 navigationController 委托(delegate)的情况下尝试了相同的一系列事件,并且没有遇到相同的问题。保持这种状态的唯一问题是我需要 navigationController 委托(delegate),以便当我在 VC3 和 VC2 之间进行转换时可以在它们之间传递信息。

最佳答案

当我执行从 VC3 到 VC2 的转场时,我发现当我将 navigationController delegate 设置回 nil 时,问题就停止了。我认为问题在于委托(delegate)属性仍然引用 VC3,但 VC3 不再存在,因此当 navigationController 尝试执行我实现的 viewWillAppear 方法时,它尝试作为委托(delegate)访问的对象不再存在。

关于ios - AppDelegate 类声明中的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435311/

相关文章:

ios - 字符串包含字母

iphone - 使用默认方法删除 uitableview 行时遇到问题

ios - 不同 iOS 相机的图像大小?

android - Android 中是否有与 NotificationListenerService 等效的 iOS?

iPhone 配置实用程序 - 显示配置文件中的所有设备

swift - 通过拖动 View 边缘来变换 View (Swift)

ios - 将 JSON 数组解包为字符串值时遇到问题

ios - 从 Firebase 检索信息时控制流如何工作?

iphone - objective-c 中的通用数组

iphone - 创建 iTunes 商店样式 "jump"动画