-3

私は目的の C に非常に慣れておらず、作成時にカスタム クラス内で変数を開始する方法を本当に思い出せません。

エラーはすべて(id)init行上にあります:

*型指定子がありません。デフォルトは「int」です (警告)

*型名には指定子または修飾子が必要です

*期待される ';' 宣言リストの最後に

#import "Seat.h"

@implementation Seat
{
    (id)init
    {
        self = [super init];
        player = NULL;
        position = -1;
        state = "empty";
    }
}

@end

これが単純に見えたらごめんなさい。ありがとう

4

3 に答える 3

5

あなたはいくつかのことを見逃しています:

-(id)init // A minus says it's an instance method
{
    if (self = [super init]) { // You should check the return value of [super init]
        player = NULL; // Should this be nil?
        position = -1;
        state = "empty"; // Should this be @"empty"?
    }
    return self; // You need to return self
}

playerがCポインターではなく、Objective Cオブジェクトである場合は、のnil代わりに割り当てるのが一般的ですNULL。文字列リテラルについても同じことが言えます。がの場合stateNSString *、それに割り当てる必要があります@"empty"

ああ、@implementation中かっこで囲むべきではありません。@endトークンは、実装ブロックが終了する場所を見つけるのに十分です。

于 2012-08-16T19:52:44.273 に答える
5

右側のユーティリティ セクションで、下半分のコード スニペット ライブラリを確認してください。「init」キーワードを検索します。コードをドラッグ&ドロップ

.ここに画像の説明を入力

于 2012-08-16T19:55:26.663 に答える
3

1 セットの中括弧が多すぎます。また、init から self を返す必要があります (そして、ほとんどの人は から非 nil の結果をチェックし[super init]ます)。

@implementation Seat

(id)init
{
    self = [super init];
    if (self) {
      player = NULL;
      position = -1;
      state = "empty";
    }
    return self;
}

@end
于 2012-08-16T19:54:01.000 に答える