我有兩個類,使用Box2d,Cocos2d。
Construct.mm和Level1.mm
構造包含在box2d物理引擎中創建不同對象的所有方法
Level1包含有關繪製對象的信息。調用外部類方法導致崩潰objective-c
在結構實現我:
Construct.mm
-(void) someInitMethod{
Level1 *level1 = [[Level1 alloc] init];
[level1 mapping];
}
-(void) someCreateRectMethod:(argue)ments{
//create rect
}
在1級實現我:
Level1.mm
-(void) mapping{
Construct *constr;
if (constr == nil) constr = [[Construct alloc] init];
[constr someCreateRectMethod:(argue)ments];
}
現在,我知道分配Level1 * level1的工作正常。它跳轉到 - (void)映射{ }。
我的問題是創建Construct * constr對象並初始化它。沒有if(constr == nil)語句。在發佈任何錯誤報告之前,模擬器將立即死亡。
如果我把if(constr == nil)然後嘗試調用[constr someCreateRectMethod:arguement];
控制檯報告:
*終止應用程序由於未捕獲的異常 'NSInvalidArgumentException' 的,理由是: ' - [1級someCreateRectMethod:]:無法識別 選擇發送到實例0x5557fc0'
我認爲這是因爲它沒有分配,因此試圖發送到自我(Level1)而不是構造。
爲什麼我的Construct * constr類對象沒有分配?就像我說的,沒有錯誤報告它發生..我已經導入Construct.h文件。我花了最後4個小時試圖讓這個工作。
編輯
我剛剛從構建體制1層繼承。而不是調用[constr someCreateRectMethod];我只需調用[super someCreateRectMethod];
這應該在理論上工作,但模擬器崩潰,並沒有記錄錯誤報告。
再次感謝您的時間。
奧利弗。
顯示真正的代碼。包括你的接口文件。 – falconcreek 2011-03-27 14:53:36