我正在开发iphone应用程序。昨天我将我的xcode更新到最新版本并清理构建文件夹(删除它),然后创建新类(没什么特别的):
@interface EnemyFactory : NSObject {
}
+(Enemy *)properReferenceForName: (NSString *) name;
@end
实施是微不足道的,并不重要。现在发生了什么: 我有这样的事情:
Enemy *tempEnemy = [EnemyFactory properReferenceForName:@"enemyname"];
但代码永远不会到达函数properReferenceForName。我有这样的堆栈的EXC_BAD_ACCESS:
0 0x02a95e2b in realizeClass
1 0x02a96dad in _class_getNonMetaClass
2 0x02a90eb0 in _class_initialize
3 0x02a961f6 in prepareForMethodLookup
4 0x02a8f6c9 in lookUpMethod
5 0x02a8f836 in _class_lookupMethodAndLoadCache
6 0x02a9dad3 in objc_msgSend
7 0x0000595d in -[GameLayer newEnemy:] at GameLayer.m:368
更新前。 Xcode没有警告或错误。符号已声明。 有趣的是:当我逐步调试整个调用时,一切都很顺利...... 我坚持了8个小时。
更新1:
[[EnemyFactory alloc] init]
会抛出相同的错误
更新2:
当我这样做时:
在初始化期间,某些大师班中的[EnemyFactory alloc]
所有内容都是绚丽的。
答案 0 :(得分:0)
看一下GameLayer.m第368行与[GameLayer newEnemy:]的关系。我发布的代码没有任何问题。
答案 1 :(得分:0)
如果代码永远不会到达您的类方法,问题就是堆栈跟踪开始的地方,即[GameLayer newEnemy:]
查找您可能需要保留但未保留在newEnemy方法中的对象。