所以我這樣做是爲了初始化我的選擇:選擇器在cocos2d調度方法
//In .h
SEL selectors[3];
//In .m
selectors[0] = @selector(rotate);
selectors[1] = @selector(discharge);
而現在的問題是:
當我在cocos2d稱這在我的init()方法是這樣的:
[self performSelector:selectors[0]];
它工作正常,但是當我把這行代碼中,通過調度([self schedule:@selector(moveThings:)]
)在我的init方法的在cocos2d結束時被調用的方法稱爲moveThings它給EXC_BAD_ACCESS
。調度東西有什麼問題?
UPDATE:
我已發現存在與旋轉功能的問題(該函數被存儲在選擇器[0])。這裏是:
-(void)rotate:(ccTime)delta {
if (((CCSprite *)[creature objectAtIndex:0]).rotation < 360) {
((CCSprite *)[creature objectAtIndex:0]).rotation++;
}
else {
((CCSprite *)[creature objectAtIndex:0]).rotation++;
}
}
如果我評論方法的內容,它通過moveThings和init調用時工作正常。
如果我改變方法內容有:
((CCSprite *)[creature objectAtIndex:0]).rotation++;
它失敗......但同樣,我想指出,所有這些事情,如果我把它在我的init方法做工作,甚至如果我通過moveThings:方法通過調度方法調用失敗,它將無法工作(除了當我取出rotate方法的內容時)。
進一步更新:
如果我稱:
((CCSprite *)[creature objectAtIndex:0]).rotation++;
在moveThings(其是,正如我以前說過的,由schedule:(SEL)
方法調用的)它將失敗。只要它不是通過時間表調用的方法調用的,它就可以工作。
崩潰日誌實際上說了什麼? –
@Deepak:對不起,我一直在編輯它錯誤...我沒有粘貼它,應該有...選擇器適用於moveThings只是不選擇[0] ... – Dair
@Deepak:崩潰日誌說'程序收到EXC_BAD_ACCESS' – Dair