我有一个marshmallow类,其中包含(除此之外)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;
稍后在文件中,使用以下行设置(已启动/已分配):
mainChar = [[mainChar alloc] init];
在写上一行时,xcode给了我一个警告,Marshmallow可能不会响应alloc。 (我不认为那是相关的。只是提到任何看似错误的事情)
我的问题是以下代码行返回nil:
[mainChar getModel];
为什么它返回nil而不是实例变量?
这是getModel函数:
-(CCSprite *)getModel
{
return model;
}
答案 0 :(得分:4)
mainChar = [[mainChar alloc] init];
不应该
mainChar = [[Marshmallow alloc] init];
消息显示该类的对象可能无法响应它,而不是类本身。
答案 1 :(得分:2)
您的问题在于mainChar
变量的初始化。您正在寻找的是:
mainChar = [[mainChar alloc] init];
您收到的警告告诉您Marshmallow
类型的实例不会响应-alloc
消息。这是你的问题:你想要调用+alloc
类方法,如下所示:
mainChar = [[Marshmallow alloc] init];
答案 2 :(得分:1)
我想你想做
mainChar = [[MarshMallow alloc] init];
而不是
mainChar = [[mainChar alloc] init];
您收到的错误信息非常重要。