0

我有一个 for in 循环,我没有完全得到我期望得到的对象。

我有一个名为 CCLayer 的类MainLayer,我在其中添加了 class 的孩子MyUniqueClass。但是,如果我尝试获取所有MyUniqueClass对象,我也会得到其他 CCNode 对象。这是我所做的MainLayer

for (MyUniqueClass *mUC in self.children){

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

}
4

2 回答 2

4

尝试找出 CCNode 对象存在的原因。不知何故,他们被添加为孩子。

或者只是忽略它并执行此操作以过滤掉其他节点类:

Class uniqueClass = [MyUniqueClass class];
for (MyUniqueClass *mUC in self.children)
{
    if ([mUC isKindOfClass:uniqueClass])
    {
        NSLog(@"%@", mUC);
    }
}
于 2012-08-02T17:19:54.883 回答
2

您似乎相信键入循环变量 asMyUniqueClass *将导致循环仅覆盖属于该类的对象。这不是枚举的工作速度。它根本不与类型检查器交互。给循环变量一个静态类型只是让编译器对你在循环体中所做的事情进行类型检查(所以它可以警告你,如果你不小心使用了像文本视图这样的文本字段)并让你使用点语法访问对象的属性。如果您只想对某个类的对象进行操作,则必须显式检入循环体,如 LearnCocos2D 所示

于 2012-08-02T17:36:04.230 回答