我有两个班,使用Box2d,Cocos2d
Construct.mm和Level1.mm
构造包含在box2d物理引擎中创建不同对象的所有方法
Level1包含有关对象绘图的信息。
在构造实现中,我有:
Construct.mm
-(void) someInitMethod{
Level1 *level1 = [[Level1 alloc] init];
[level1 mapping];
}
-(void) someCreateRectMethod:(argue)ments{
//create rect
}
在Level1实现中,我有:
Level1.mm
-(void) mapping{
Construct *constr;
if (constr == nil) constr = [[Construct alloc] init];
[constr someCreateRectMethod:(argue)ments];
}
现在,我知道Level1 * level1的分配工作正常。它跳转到 - (void)mapping {
}。
我的问题是创建Construct * constr对象并初始化它。没有if(constr == nil)语句。在发布任何错误报告之前,模拟器将立即死亡
如果我把if(constr == nil)然后尝试调用[constr someCreateRectMethod:arguement];
控制台报告:
* 由于未捕获的异常而终止应用 'NSInvalidArgumentException',原因: ' - [Level1 someCreateRectMethod:]:无法识别 选择器发送到实例0x5557fc0'
我认为这是因为它没有分配,因此试图发送给自己(Level1)而不是Construct 为什么我的Construct * constr类对象不能分配?就像我说的,没有错误报告它发生..我已经导入了Construct.h文件。我花了最后4个小时试图让它发挥作用。
修改
我刚刚从Construct继承了第1层。而不是调用[constr someCreateRectMethod];我只是叫[super someCreateRectMethod];
这应该在理论上有效,但模拟器崩溃并且没有记录错误报告..
再次感谢您的时间。
奥利弗。
答案 0 :(得分:1)
你可能最终没有创建constr - 初始值是未定义的,因此不太可能是零。如果您的代码在[[constr alloc] init]处终止,那么您似乎很可能无法继承NSObject(您应该)并且未实现init(您经常需要)。
答案 1 :(得分:-1)
好的,我发现了问题,当我打电话时,正在执行一个无限循环 [level1 mapping]。我在Level1方法映射中添加了一个NSLog语句,以查看控制台是否填满了NSLogs。
这个无限循环仅在我尝试初始化Construct * constr对象时创建...
Construct.mm
-(id) init
{
if( (self=[super init])) {
//ALLOCS
_Eggs = [[NSMutableArray alloc] init];
_Block1s = [[NSMutableArray alloc] init];
_Block2s = [[NSMutableArray alloc] init];
//Begin Mapping of environment
Level1 *level1 = [[[Level1 alloc] init] autorelease];
[level1 mapping];
}
return self;
}
Level1.mm
@implementation Level1
-(void) mapping{
NSLog (@"Mapping");
Construct *constr = [[Construct alloc]init];
return;
}
@end
控制台:
2011-03-28 09:43:24.980 Construct[14661:207] Mapping
2011-03-28 09:43:24.981 Construct[14661:207] Mapping
2011-03-28 09:43:24.982 Construct[14661:207] Mapping
2011-03-28 09:43:24.982 Construct[14661:207] Mapping
2011-03-28 09:43:24.983 Construct[14661:207] Mapping
2011-03-28 09:43:24.983 Construct[14661:207] Mapping
2011-03-28 09:43:24.984 Construct[14661:207] Mapping
2011-03-28 09:43:24.985 Construct[14661:207] Mapping
2011-03-28 09:43:24.985 Construct[14661:207] Mapping
2011-03-28 09:43:24.986 Construct[14661:207] Mapping
2011-03-28 09:43:24.986 Construct[14661:207] Mapping
...