1

JWGeoGameこれらのプロパティを持つクラスがあります:

@interface JWGeoGame : NSObject{
    JWCountry *hidden,*last,*prev;
}
@property (nonatomic) JWCountry *hidden;
@property (nonatomic) JWCountry *last;
@property (nonatomic) JWCountry *prev;

//some methods

@end

ただし、それらのいずれかを設定しようとすると、不可解なエラーが発生します。

Implicit conversion of Objective-C pointer type 'Class' to C pointer type 'struct objc_class *' requires a bridged cast.

このエラーは、次のいずれかのシナリオで発生します:

self.prev=self.last;
self.prev=nil;

それらを比較に使用しようとすると:

if (guess == self.hidden)
    return FOUND;

別のエラーが発生します:

Member reference type 'struct objc_class *' is a pointer, did you mean ->?

しかし、試してみるとこのエラーが発生します->代わりに:

Member reference base type 'Class' is not a structure of union.

明らかに、私はここで何か間違ったことをしていますが、どれだけ多くの例を見ても、何が原因なのかわかりません。どうすればこれを修正できますか?

編集:

JWCountry は現在、単なるスケルトンです。

@interface JWCountry : NSObject{
    NSInteger index;
}
@property NSInteger index;
@end
4

1 に答える 1

3

クラスメソッドからプロパティを取得するためにドット構文を使用している可能性がありますが、クラスselfメソッド内にはクラスのインスタンスではなく実際のクラスオブジェクト自体があるため、これらのプロパティはありません。

これを修正するにはself、インスタンス メソッドのプロパティのみにアクセスするようにしてください。クラス レベルのストレージのようなものが必要な場合は、静的変数を使用します。

于 2013-09-05T18:12:00.977 に答える