1

「Make Games With Us」を通じてジョン・コンウェイの「人生のゲーム」の作り方を追ってみました。MainScene.m のステップ メソッドに到達するまで、ほとんどのチュートリアルをたどることができました (サイトへのリンクはこちら)。

- (void)step
{
    [_grid evolveStep]
    _generationLabel.string = [NSString stringWithFormat:@"%d", _grid.generation];
    _populationLabel.string = [NSString stringWithFormat:@"%d", _grid.totalAlive];
}

エラーは同じタイプです。それらは _grid.generation と _grid.totalAlive に現れています。エラーは次のとおりです。

Property 'generation' not found on object of type 'Grid *'
Property 'totalAlive' not found on object of type 'Grid *'

まったく同じ問題を修正する方法についてこのリンクを見ましたが、SpriteBuilder ですべてを正しく保存して公開しました。ユーザーは明らかにそれを解決しましたが、方法がわかりません。

更新: プロパティ宣言の欠落 (Grid.m):

#import "Grid.h"
#import "Creature.h"

// variables that cannot be changed
static const int GRID_ROWS = 8;
static const int GRID_COLUMNS = 10;

@implementation Grid {
    NSMutableArray *_gridArray;
    float _cellWidth;
    float _cellHeight;
    int _generation; // This one
    int _totalAlive; // This one
}

/*Rest of the methods go here*/

@end

前もって感謝します!

4

2 に答える 2

2

残念ながら、これはチュートリアルの間違いでした。

実際、次の 2 つのプロパティを に追加する必要がありますGrid.h

@property (nonatomic, assign) int totalAlive;
@property (nonatomic, assign) int generation;

にインスタンス変数を追加する代わりに、Grid.m.

チュートリアルが更新されました: https://www.makegameswith.us/tutorials/game-of-life-spritebuilder/game-of-life-code/

また、ソリューションのコード全体は GitHub にあります: https://github.com/MakeGamesWithUs/GameOfLife.spritebuilder

ご不便おかけしてすみません!

于 2014-05-27T20:15:24.880 に答える
0

generationエラー メッセージは、 class の名前の付いたプロパティがないことを示していますGrid。おそらく、先頭に "_" と "self." を付けてプロパティに直接アクセスすることに混乱しているかもしれません。

そのようなプロパティが存在することを確認してください。質問を更新して、不足しているプロパティの宣言を表示します。

直接アクセスする代わりに、プロパティのセッターとゲッターを使用してください。すべての ivar をプロパティとして宣言します。これにより、一貫性が生まれ、エラーが減少します。

于 2014-05-27T00:57:53.177 に答える