无法初始化一个类对象:objective-C

时间:2014-08-14 00:06:42

标签: objective-c cocos2d-iphone subclass init

我正在尝试创建一个简单的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];
}

2 个答案:

答案 0 :(得分:20)

情侣,

在Obj-c中,当您想要初始化Object时,需要为它分配空间。 这是使用alloc关键字完成的。

所以你的ContentPane *pane = [ContentPane init];

变成ContentPane *pane = [[ContentPane alloc] init];

此外,无论您接下来的教程是什么,停止......您声明变量的方式我们称之为iVars(iVars)是一种非常老式的做事方式,它们应该是属性。和Boolean值由YESNO表示,而不是TRUEFALSE

答案 1 :(得分:1)

如果您像我一样在这里,想知道为什么代码崩溃了。

 [NSArray init];

应为:

[[NSArray alloc] init];

[NSArray array];

您的崩溃可能是由其他任何类引起的,这里的NSArray仅供参考。