如何调试Swift的函数调用堆栈?

时间:2017-11-24 02:33:26

标签: swift xcode debugging breakpoints

我遇到屏幕被推两次的问题。问题是我不知道哪个pushViewController正在这样做,而且我有很多这样的。所以我想在navigationController.pushViewController()函数中添加一个断点,这样我就可以看到调用该函数的前一个调用堆栈是什么。我不需要看到pushViewController的内部。我只需要在每次调用navigationController的函数pushViewController时停止断点。但是我无法在导航控制器代码的open func pushViewController()上放置断点。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您可以延长UINavigationController并覆盖pushViewController功能。

class MyNavigationViewController : UINavigationController {
    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        super.pushViewController(viewController, animated: animated)
    }
}

然后,如果您使用的是故事板,请将导航控制器的类更改为MyNavigationViewController,如果您从代码创建导航控制器,也可以在代码中更改。