游戏可在 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 中运行良好