我正在尝试创建一个简单的CCNode子类,但我无法创建该对象。
它给出了错误“ *由于未捕获的异常而终止应用程序'NSInvalidArgumentException',原因:'* + [ContentPane< 0x206898> init]:无法初始化类对象。'”
这是我的CCNode的子类:
#import "ContentPane.h"
@implementation ContentPane{
int content[8][4];
CCSprite *_rockPath1;
CCSprite *_rockPath2;
}
- (id)init {
self = [super init];
if (self) {
CCLOG(@"ContentPane created");
}
return self;
}
@end
这是我尝试启动它的地方:
- (void)didLoadFromCCB {
// tell this scene to accept touches
self.userInteractionEnabled = TRUE;
_counter = 0;
ContentPane *pane = [ContentPane init];
}
答案 0 :(得分:20)
情侣,
在Obj-c中,当您想要初始化Object时,需要为它分配空间。
这是使用alloc
关键字完成的。
所以你的ContentPane *pane = [ContentPane init];
变成ContentPane *pane = [[ContentPane alloc] init];
此外,无论您接下来的教程是什么,停止......您声明变量的方式我们称之为iVars(iVars)是一种非常老式的做事方式,它们应该是属性。和Boolean
值由YES
和NO
表示,而不是TRUE
和FALSE
答案 1 :(得分:1)
如果您像我一样在这里,想知道为什么代码崩溃了。
[NSArray init];
应为:
[[NSArray alloc] init];
或
[NSArray array];
您的崩溃可能是由其他任何类引起的,这里的NSArray仅供参考。