2012-08-02 99 views
0

我有一個for循環,我不完全得到我期望得到的對象。for循環返回錯誤的對象

我有一個名爲MainLayer的CCLayer類,我添加了類MyUniqueClass的孩子。但是,如果我嘗試獲取所有對象,我也會得到其他CCNode對象。這是我在做MainLayer

for (MyUniqueClass *mUC in self.children){ 

     NSLog(@"%@", mUC); //Here I get all kinds of objects 

} 

回答

4

揣摩爲什麼CCNode對象的存在。不知何故,他們已被添加爲兒童。

或者只是忽略了和這樣做是爲了過濾掉其他節點類:

Class uniqueClass = [MyUniqueClass class]; 
for (MyUniqueClass *mUC in self.children) 
{ 
    if ([mUC isKindOfClass:uniqueClass]) 
    { 
     NSLog(@"%@", mUC); 
    } 
} 
+0

是的,我有CCNode對象故意。我認爲for in循環給了我所有的MyUniqueClass對象。如果它給我所有的CCNode對象,它有什麼用處呢?我可以在沒有for in循環的情況下遍歷子元素,並在其中使用'-isKindOfClass'方法。 – 2012-08-02 17:24:32

+0

for循環只是一個快速迭代器。就這樣。 – 2012-08-02 17:38:53

+0

for in返回self.children中的所有對象。將接收指針投射到MyUniqueClass *不會更改您獲得的對象。 – LearnCocos2D 2012-08-02 20:46:32

2

您似乎認爲,鍵入循環變量MyUniqueClass *會導致循環屬於該類別僅覆蓋對象。這不是枚舉工作的速度。它根本不與類型檢查器進行交互。給循環變量賦予一個靜態類型只是讓編譯器對你在循環體中做的事情進行類型檢查(所以如果你不小心使用了像文本視圖那樣的文本字段,它會發出警告),並且讓你使用點語法訪問對象的屬性。如果你只想操作某個類的對象,你必須明確地檢查你的循環體as shown by LearnCocos2D

+0

謝謝,我不知道。 – 2012-08-02 17:38:25