1

私は解読単語ゲームを作成しています。

以下を使用してゲームを保存/ロードできる段階に達しました。

  • (void)encodeWithCoder:(NSCoder *)aCoder

  • (instancetype)initWithCoder:(NSCoder *)aDecoder

初めてゲームを保存/ロードするときは問題ありません。2回目にホームボタンを押すと、アプリがクラッシュし、理解できないエラーが発生します。

これは何を意味するのでしょうか?

2014-01-11 18:23:12.254GameTest[16622:70b]キャッチされていない例外によるアプリの終了

'Attemped to add nil node', reason: 'Attemped to add nil node to parent: <SKNode> name:'(null)' position:{0, 0} accumulatedFrame:{{inf, inf}, {inf, inf}}'

コードのどこでエラーが発生したかわかりません。

乾杯ルーク

4

2 に答える 2

0

一部の種類の iPad に影響を与えると思われる同様の問題に遭遇しました。シーンは nil の子を追加しようとしていました。

例外処理ブロックを追加すると、例外の印刷ステートメントが表示されないにもかかわらず、修正されたようです。

    @try {
        [self addChild:node];
    }
    @catch (NSException *exception) {
        NSLog(@"Exception adding node :%@",[exception description]);
    }
    @finally {

    }
于 2014-03-31T17:31:31.157 に答える
0

LearnCocos2D さん、ありがとうございます。

エラーは、その詳細では難解です(私の見解)。

問題は、「bodyWithEdgeLoop」境界の処理方法にありました。

問題は次のことにも関係していました。

(void)encodeWithCoder:(NSCoder *)aCoder

(インスタンスタイプ)initWithCoder:(NSCoder *)aDecoder

メソッド。

Ray Wenderlich の iOS Games by Tutorials の本を使用していますが、「initWithCoder」メソッドを間違えました。

「encodeWithCoder」メソッドでエッジループ本体を削除して置き換えましたが、「initWithCoder」メソッドで作成していませんでした。

それが解決策です。ゲームを保存するとき、「encodeWithCoder」メソッドでエッジ ボディ ループを削除して置き換える必要がありますが、「initWithCoder」メソッドでも作成する必要があります。

最大の問題は、Xcode が私のコードのどの行も指していなかったことです。私はこれを「勘」でやっただけです。

それが役に立てば幸い。

于 2014-01-12T08:08:18.110 に答える