游戏可在 iOS 8 上运行,但在 iOS 7 中崩溃

Posted

技术标签:

【中文标题】游戏可在 iOS 8 上运行,但在 iOS 7 中崩溃【英文标题】:game works on iOS 8 but crashes in iOS 7 【发布时间】:2015-02-09 17:15:41 【问题描述】:

我几乎完成了我的游戏开发,它在 ios 8 上完美运行,但我将部署目标更改为 iOS 7.1 并尝试在 iOS 7.1 模拟器上运行它,游戏崩溃了。有什么理由吗?我使用 swift 作为编程语言。

错误是“线程 1:signal SIGABRT”

编辑 1:当我添加 SKLabelNode 时,它​​似乎崩溃了。这是添加分数标签的函数:

var scoreLabel = SKLabelNode()

func addScoreLabel()

    scoreLabel = SKLabelNode(text: "Score: \(score)")
    scoreLabel.fontSize = 25

    let xPos = size.width/2 //- gameOverHUD.size.width/5
    let yPos = size.height/2 //+ gameOverHUD.size.height/2 - 5

    scoreLabel.position = CGPoint(x: xPos, y: yPos)
    addChild(scoreLabel)


这是我在输出控制台中得到的完整错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+[SKLabelNode labelNodeWithText:]:无法识别的选择器发送到类 0x10f22a3a0”

编辑 2:我能够修复它。如果有人遇到同样的问题,只需将 'scoreLabel = SKLabelNode(text: "Score: (score)")' 替换为 scoreLabel.text = "Score: (score)")。

【问题讨论】:

kirillmuzykov.com/forums/topic/how-to-debug-signal-sigabrt 和 raywenderlich.com/10209/my-app-crashed-now-what-part-1 有很多可能性。由于您已经完成了游戏并且要发布的内容太多,我建议您通过设置断点和 NSLog 来查看问题所在。然后报告并发布罪魁祸首。另外,以后如果你想部署到更早的版本,我建议你在创建程序时设置部署版本,并至少在所有版本的模拟器上测试它。 我用导致问题的代码编辑了我的帖子。请检查一下,如果您能解决问题,请告诉我。 【参考方案1】:

看看这个

https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKLabelNode_Ref/index.html#//apple_ref/occ/clm/SKLabelNode/labelNodeWithText:

labelNodeWithText 仅适用于 iOS 8 及更高版本。它不适用于 iOS 7。你可以改为:

let label = SKLabelNode()  // or SKLabelNode(fontNamed: "whatever")
label.text = "hey there"

【讨论】:

是的,我现在才明白。不过非常感谢! :) 会接受你的回答... 现在我得到的另一个错误是:"+[SKPhysicsBody bodyWithTexture:size:]: unrecognized selector sent to class 0x10a401828" 是否有不同的语法可以与 iOS 7 一起使用?跨度> 那也不存在。除非您需要精确的边缘,否则我只会使用 rect 初始化器 对于精确的边缘,我可以使用什么? let test = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 10, height: 10)) test.physicsBody = SKPhysicsBody(rectangleOfSize: test.size) 为您提供精确的边缘需要使用 SKPhysicsBody(polygonFromPath: ) 并创建一个路径以在那里传递

以上是关于游戏可在 iOS 8 上运行,但在 iOS 7 中崩溃的主要内容,如果未能解决你的问题,请参考以下文章

UIView animatewithduration 在 iOS 7 上跳过动画,但在 iOS 8 上运行良好

在 ios 8 中的 UITextview 中单击时,键盘不会弹出但在 ios 7 中运行良好

应用程序在 iOS 8 中运行良好,但在 iOS 7 中却不行

需要帮助:“错误的架构”导致应用在 iOS 7 中启动时崩溃,但在 iOS 8 中运行良好

UITableView 在 iOS 7 中工作,但在 iOS 8 中看起来很糟糕

向左滑动删除单元格在 ios 8 中无法正常工作,但在 ios 7 中有效