Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Objective访问子类中的基类属性?_Objective C_Inheritance - Fatal编程技术网

Objective c Objective访问子类中的基类属性?

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

我是ObjectiveC的新手,我有以下继承权

    @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,您可以完全忽略它,并自动合成。