2012-08-26 17 views
0

我是Objective-C的新手。我的大部分经验都在Java中。我有一个基类:GNUStep上的Objective-C:访问父类的ivars

@interface Bug : NSObject <BugProtocol> { 

    @private 
    World* world; 
    NSString* name; 
    NSString* layer; 
    long x; 
    long y; 
    BOOL alive; 

... 
... 


} 

... 
... 

@end 

和类扩展这个基类:

@interface RandomBug : Bug 
    ... 
    ... 
@end 

然而,当我试图访问我在父类中所定义的属性,编译器会抱怨它无法找到它们。我见过的访问属性的大部分示例都是针对OS X定制的(即,使用诸如@property之类的东西,据我所知,在GNUStep中并未完全支持这些示例)。

+0

那么,你如何声明这些属性呢?另外,GNUstep不支持或不支持关键字 - 它是编译器。 – 2012-08-26 17:21:48

回答

1

我想通了。我只需要使用@protected(就像在Java中一样):

@interface Bug : NSObject <BugProtocol> { 

    @protected 
    World* world; 
    NSString* name; 
    NSString* layer; 
    long x; 
    long y; 
    BOOL alive; 

... 
... 


} 

... 
... 

@end 
+2

这些不是属性,但Ivars,Objective-C中的巨大差异! – JustSid

+0

哎呀,对不起。 Objective-C中两者有什么区别? –

+2

http://stackoverflow.com/questions/719788/property-vs-instance-variable –