gpt4 book ai didi

objective-c - iOS 7.1 - 7.1.2 所有者无法打开我的游戏

转载 作者:搜寻专家 更新时间:2023-10-30 19:59:36 26 4
gpt4 key购买 nike

我有一款简单的免费 iOS 街机游戏无法正常运行,从 App Store 安装后,适用于 iOS 7.1 - 7.1.2 的 iPhone 用户。该游戏是使用 Sprite Kit 和 Objective-C(从来没有 Swift 的)构建的,但本质上非常简单,没有任何花哨的代码或复杂性。它也适用于安装了 iOS 8.x.x 的任何人。下载适用于 Xcode 6 的 iOS 7.1 模拟器后,我能够重现问题: iPhone 的 4S、5 或 5S 运行 iOS 版本 7.1 - 7.1.2 全部崩溃 - 所以启动图像出现,但当它需要从加载游戏时SKScene 类称为 MyScene,它就是打不开。在崩溃日志中,它说了以下内容:

+[SKLabelNode labelNodeWithText:]: unrecognized selector sent to class 0x1022503a0

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[SKLabelNode labelNodeWithText:]: unrecognized selector sent to class 0x1022503a0'
*** First throw call stack:
(
0 CoreFoundation 0x00000001029a6495 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010270199e objc_exception_throw + 43
2 CoreFoundation 0x0000000102a3755d +[NSObject(NSObject) doesNotRecognizeSelector:] + 205

崩溃后,Xcode 将我带到一些关于“dispatch_once”的 Apple 代码页并突出显示第 68 行:

dispatch_once(predicate, block);          Thread 1: signal SIGABRT

基本上,在 MyScene 中,有 -(id)initWithSize:(CGSize)size 方法。在里面,我创建了

static dispatch_once_t onceMS;
dispatch_once(&onceMS, ^{

在 dispatch_once 中,我有 4 件事: 1. 创建 audioController 的一个实例(一个负责播放循环背景音乐的类)。 2. SKSpriteNode spriteNodeWithImageNamed: 3. SKLabelNode labelNodeWithText: 4. SKLabelNode labelNodeWithText:

所有这 4 个东西都应该在游戏开始时显示一次:它们是如何玩游戏的视觉说明。背景音乐是​​不言自明的。我尝试将所有这些注释掉,但它仍然显示与以前相同的崩溃日志。我继续评论整个静态 dispatch_once & 仍然是游戏崩溃。有人可以给出一些智慧吗?由于缺乏经验,我不知道该怎么做。

最佳答案

根据documentation +[SKLabelNode labelNodeWithText:] 在 iOS7 上根本不可用

我几乎没有使用 SpriteKit 的经验,但你应该能够替换所有实例

SKLabelNode *node = [SKLabelNode labelNodeWithText:@"your text"];

与:

SKLabelNode *node = [SKLabelNode labelNodeWithFontNamed:@"HelveticaNeue-UltraLight"];
node.fontSize = 32;
node.text = @"your text";

您也可以在 SKLabelNode 上创建自己的类别:

@interface SKLabelNode (iOS7Compatibility)
+ (instancetype)mba_labelNodeWithText:(NSString *)text;
@end

@implementation SKLabelNode (iOS7Compatibility)
+ (instancetype)mba_labelNodeWithText:(NSString *)text {
SKLabelNode *node = [self labelNodeWithFontNamed:@"HelveticaNeue-UltraLight"];
node.fontSize = 32;
node.text = text;
return node;
}
@end

它允许您使用:

SKLabelNode *node1 = [SKLabelNode mba_labelNodeWithText:@"your text"];

您必须将类别方法命名为labelNodeWithText:,因为您不想覆盖类别中的方法。

关于objective-c - iOS 7.1 - 7.1.2 所有者无法打开我的游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27482726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com