我試圖運行一個操作,但是我想確定哪一個。比如我有在變量名稱後面添加一個整數以訪問
[bullet runAction:bullet1];
我希望能夠操縱它的訪問 像
[bullet runAction:bullet%d, i];
我試圖運行一個操作,但是我想確定哪一個。比如我有在變量名稱後面添加一個整數以訪問
[bullet runAction:bullet1];
我希望能夠操縱它的訪問 像
[bullet runAction:bullet%d, i];
使用的動作數組變量,並使用索引來訪問它們
NSArray bulletActions = @[bullet1, bubble2];
[bullet runAction:bulletActions[0]];
我認爲它會滿足您的需求
你能解釋什麼是bullet1和bubble2,以及如何runAction:調用bulletActions [0]? – 2013-03-08 11:53:11
@Anoop bullet1,bulle2等。我想他們是CCAction,我猜他有很多動作,並且通過索引來運行它們,所以這是我提出的解決方案將它們存儲在一個數組中,runAction和bulletActions [0]將在這種情況下運行bullet1 – Ultrakorne 2013-03-08 12:01:03
我沒有太多想法關於CCActions :( – 2013-03-08 12:05:18
你不能做什麼你正在試圖做的問題,而不是傳遞一個子彈對象的數組,並傳遞給你想要訪問該數組元素的值。
您需要使用selector
SEL selector=NSSelectorFromString([NSString stringWithFormat:@"bullet%d", i]);
[self performSelector:selector];
從這裏就可以調用一個方法命名爲bullet1
,buttet2
等,如果i
提供爲1,2等
-(void)bullet1{
[email protected]"bullet 1 called";
}
-(void)bullet2{
[email protected]"bullet 2 called";
}
-(void)bullet<your integer value>{
[email protected]"bullet <your integer value> called";
}
這是正確的,但他不應該使用這種設計來做他在做的事情,使用運行時功能對此不是一個不錯的選擇,但+1無論如何 – Ultrakorne 2013-03-08 11:52:03
@Ultrakorne:你能解釋爲什麼我們不應該使用動態方法調用?我知道Obj-C的活力使它比許多其他語言更好。 – 2013-03-08 11:55:15
,因爲他只是想要一個索引訪問變量的集合,這就是這麼簡單,我不覺得需要過度複雜。 – Ultrakorne 2013-03-08 12:01:56
編輯:對不起,後看着我的回答,我看到了一些缺陷,並將其寫爲更好的方法來實現這一目標。
這樣做的最佳結果是創建一個包含所有操作的數組。即
NSArray actionArray = [[NSArray alloc] initWithItems:bullet1, bullet1, bullet3, nil];
然後你就可以運行創建一個方法來運行的操作:
- (void)bulletAction:(int)numberToRun {
[bullet runAction:[actionArray objectAtIndex:numberToRun]];
}
這可以通過使用代碼調用:
[self bulletAction:0];
其中0是什麼號碼,你想跑步。
wt是你的問題? – iPatel 2013-03-08 11:34:00
我不認爲這是可能的。也許你可以用標籤來代替。 – aqua 2013-03-08 11:34:06
@aqua:這當然是可以的。 – 2013-03-08 11:51:36