我有一个最小的工作项目,如果用 Xcode 8.3.3 编译它会给我 EXC_BAD_ACCESS。该项目是一个简单的 VIPER 模块实现。Swinject 被用于创建模块本身以及所有依赖项。
我如何解决问题(或认为我解决了):
- 通过删除 SwinjectBug 目录的引用并重新添加解决了几天前的问题。但是,这不再起作用了。
什么仍然解决了这个问题:
- 使用相同的 iPhone 型号和 iOS 版本在 Xcode 9-beta 中编译和运行可以完美运行。[这个观察可能是错误的。一直不工作]
- 如果我强制 cast
output as! SplashScreenPresenter
,代码可以正常工作。
可能的场景:
- Xcode 8.3.3 中存在一个错误,在 Xcode 9 中已解决但如果上述情况属实,则其他模块应该失败但事实并非如此。
- 我使用 Swinject 的方式有问题。
您可以编译并运行该项目。
我在用:
- iPhone 6s 64GB 上的 iOS 10.3.1
- Xcode 8.3.3
EXC_BAD_ACCESS 发生在 SplashViewController 中,在输出时调用 viewIsReady
override func viewDidLoad() {
super.viewDidLoad()
output.viewIsReady()
}