1

我正在使用 CocosBuilder 2.1 和 Cocos2d-iPhone 2.0。我已经编译了 CocosBuilder,在我的项目中使用他们的单文本标签示例时遇到了一个奇怪的问题。

这是有问题的代码,来自 CCBReader.m 第 823 行:

Class class = NSClassFromString(className);
if (!class)
{
    NSLog(@"CCBReader: Could not create class of type %@",className);
    return NULL;
}

失败并显示文本“无法创建 CCLabelTTF 类型的类”。但是,如果我像这样更改代码:

Class class = NSClassFromString(className);
if (!class)
{
    CCLabelTTF* tempLabel = [[CCLabelTTF alloc] init];
    [tempLabel release];
    NSLog(@"CCBReader: Could not create class of type %@",className);
    return NULL;
}

有用。我没有看到其他人在这个地方遇到了 CocosBuilder 的问题,所以这是怎么回事?

奇怪的是,这种变化只能在编译器级别影响它,因为添加的代码在错误段内,对吧?

4

2 回答 2

3

因为您在项目中根本没有使用CCLabelTTF,所以运行时没有为您加载类。

它在您完成 hack 后工作,因为您的项目现在确实使用CCLabelTTF该类,因此运行时将加载它。

要解决此问题,请添加-ObjC到您的链接器标志,查看以下链接中的详细信息

http://developer.apple.com/library/mac/#qa/qa1490/_index.html https://stackoverflow.com/a/2615407/642626

于 2013-05-10T13:19:21.713 回答
0

来自苹果文档

由 aClassName 命名的类对象,如果当前没有加载该名称的类,则为 nil。如果 aClassName 为 nil,则返回 nil。

您的变量“className”为 nil,或者在此调用之前未在运行时加载类。尝试使用以下命令强制加载此类:

[CCLabelTTF class];

代码中的任何位置。

未来:在创建新问题之前尝试搜索您的问题。

于 2013-05-10T13:17:47.883 回答