OGeek|极客世界-中国程序员成长平台

标题: iOS 应用程序仅使用 Xcode 6.0.1 在 iOS 7 上崩溃 - 无法识别的选择器发送到实例 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 11:54
标题: iOS 应用程序仅使用 Xcode 6.0.1 在 iOS 7 上崩溃 - 无法识别的选择器发送到实例

我正在从事移动应用开发,最近一直在研究移动游戏。我偶然发现了一个 Github Repo (Here)。这是一款使用 SpriteKit 构建的游戏,我正在努力学习。

我尝试在运行 iOS 7 的 iPhone 上使用 Xcode 6.0.1 构建和运行它,但它崩溃了。它在运行 iOS 8 的设备上运行良好。我添加了一个断点异常来尝试确定崩溃的原因,这就是我得到的:

2014-09-25 14:23:35.813 spritybird[4470:60b] -[Scene delegate]: unrecognized selector sent to instance 0x175de140
(lldb)

它似乎在 Scene.m 文件的第 61 行中断。

if([self.delegate respondsToSelectorselector(eventStart)]){ // This is line 61
   [self.delegate eventStart];
}

我似乎无法理解是什么导致它仅在 iOS 7 上崩溃。

任何帮助都会很棒!谢谢。



Best Answer-推荐答案


由于 Scene 很可能是 SKScene 子类,因此它不会获取 delegate 属性(它是 SKSceneDelegate 的一个实例,直到 iOS8

所以代码是错误的。

在那个时候修复

if([self respondsToSelectorselector(delegate)]){
   if([self.delegate respondsToSelectorselector(eventStart)]){
       [self.delegate eventStart];
   }
}

但你真的想深入研究代码并在 Scene 的来源及其继承中工作,以确保 eventStart 似乎不是 SpriteKit 框架符号。我猜还有一些委托(delegate)协议(protocol)的自定义。

关于iOS 应用程序仅使用 Xcode 6.0.1 在 iOS 7 上崩溃 - 无法识别的选择器发送到实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26040131/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4