Objective c Objective访问子类中的基类属性?
我是ObjectiveC的新手,我有以下继承权Objective c Objective访问子类中的基类属性?,objective-c,inheritance,Objective C,Inheritance,我是ObjectiveC的新手,我有以下继承权 @interface CGameEntity : NSObject { b2Body *entityBody; } @property(nonatomic,retain) CCSprite *entitySprite; -(id)initEntity:(CCNode*)parentNode :(b2World*)world; @end 实施: @implementation CGameEnt
@interface CGameEntity : NSObject {
b2Body *entityBody;
}
@property(nonatomic,retain) CCSprite *entitySprite;
-(id)initEntity:(CCNode*)parentNode :(b2World*)world;
@end
实施:
@implementation CGameEntity
@synthesize entitySprite=entitySprite;
.
.
.
@end
扩展类如下:
@interface CPlanet : CGameEntity {
}
@end
实施情况如下:
@implementation CPlanet
-(id)initEntity:(CCNode*)parentNode :(b2World*)world
{
if((self = [super init]))
{
//cannot access "entitySprite" ????
entitySprite=[CCSprite spriteWithFile:@"planet.png"];
}
return self;
}
@end
在扩展类中,我无法访问属性“entitySprite”。
如何访问基类的属性
谢谢首先,请更换
@synthesize entitySprite=entitySprite;
由
@synthesize entitySprite;
然后,换掉这条线
entitySprite=[CCSprite spriteWithFile:@"planet.png"];
通过这个
self.entitySprite = [CCSprite spriteWithFile:@"planet.png"];
这会有用的 entitySprite和not entitySprite有什么特别的原因吗?事实上,我喜欢将下划线后置以便于键入和自动完成,但我想知道您是否一直使用这种格式?我更喜欢
\u entitySprite
而不是entitySprite\u
,而且默认情况下,\u entitySprite
是合成的。因此,您可以用\u entitySprite
替换self.entitySprite
,只需确保您使用的是ARC,或者使用ObjC的GC了解您的方向。使用最新的XCode,您可以完全忽略它,并自动合成。