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.

此错误发生在以下场景的ech中:

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 回答