我正在使用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的问题,所以发生了什么?
奇怪的是,这种变化只能在编译器级别影响它,因为添加的代码在错误段内,对吗?
答案 0 :(得分:3)
因为您在项目中根本没有使用CCLabelTTF
,所以运行时没有为您加载该类。
它在您执行hack后工作,因为您的项目现在使用CCLabelTTF
类,因此运行时将加载它。
要解决此问题,请将-ObjC
添加到链接器标志,检查以下链接中的详细信息
http://developer.apple.com/library/mac/#qa/qa1490/_index.html https://stackoverflow.com/a/2615407/642626
答案 1 :(得分:0)
由aClassName命名的类对象,如果当前未加载该名称的类,则为nil。如果aClassName为nil,则返回nil。
您的变量“className”为nil,或者在此调用之前未在运行时加载类。 尝试使用以下方法强制加载此类:
[CCLabelTTF class];
代码中的任何地方。
将来:尝试在创建新版本之前搜索your question。