尽管保留了目标C实例变量,但还是释放了该变量



我有一个棉花糖类,它有一个CCSprite对象作为实例变量。

这是init方法:

-(id) init
{
    if((self = [super init]))
    {   
        model = [[CCSprite spriteWithFile:@"marshmallow.png"] retain];
        maxSpeed = 5; //160px per second (maxspeed * PTM_Ratio = px/second max)
        gravity = 9.81; // in meters/sec^2
        health = 3;
    }
    return self;
}

变量在另一个文件中声明为全局变量,行为:

Marshmallow *mainChar;

在文件的后面,用以下行设置(initiated/alloc'd(:

mainChar = [[mainChar alloc] init];

在写前一行时,xcode警告我,Marshmallow可能对alloc没有响应。

我的问题是以下代码行返回零:

[mainChar getModel];

为什么它返回nil而不是实例变量?

这是getModel函数:

-(CCSprite *)getModel
{
    return model;
}
mainChar = [[mainChar alloc] init];

不应该是

mainChar = [[Marshmallow alloc] init];

该消息表示,该类中的对象可能不会对其做出响应,而不是类本身。

您的问题在于mainChar变量的初始化。你要找的线路是:

mainChar = [[mainChar alloc] init];

您收到的警告告诉您,类型为Marshmallow的实例将不会响应-alloc消息。这就是你的问题:你想调用+alloc类方法,就像这样:

mainChar = [[Marshmallow alloc] init];

我想你想做

mainChar = [[MarshMallow alloc] init];

而不是

mainChar = [[mainChar alloc] init];

您收到的错误信息非常重要。

最新更新