每当我访问一个属性时出错

时间:2013-09-05 18:01:08

标签: objective-c properties

我有一个具有这些属性的课程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

1 个答案:

答案 0 :(得分:3)

您可能使用点语法从类方法获取属性,但类方法中的self是实际的类对象本身,而不是类的实例,因此没有那些属性。

要解决此问题,请确保您只在实例方法中访问self的属性。如果您需要类级存储,请使用静态变量。