我有一个棉花糖类,它有一个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];
您收到的错误信息非常重要。