Iphone for in循环返回错误的对象

Iphone for in循环返回错误的对象,iphone,objective-c,ipad,cocos2d-iphone,for-in-loop,Iphone,Objective C,Ipad,Cocos2d Iphone,For In Loop,我有一个for-in循环,在这个循环中,我没有得到我期望得到的对象 我有一个名为MainLayer的CCLayer类,在这里我添加了类MyUniqueClass的子类。但是,如果我尝试获取所有MyUniqueClass对象,我也会获取其他CCNode对象。以下是我在MainLayer中所做的工作: for (MyUniqueClass *mUC in self.children){ NSLog(@"%@", mUC); //Here I get all kinds of obj

我有一个for-in循环,在这个循环中,我没有得到我期望得到的对象

我有一个名为
MainLayer
的CCLayer类,在这里我添加了类
MyUniqueClass
的子类。但是,如果我尝试获取所有
MyUniqueClass
对象,我也会获取其他CCNode对象。以下是我在
MainLayer
中所做的工作:

for (MyUniqueClass *mUC in self.children){

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

}

尝试找出CCNode对象存在的原因。不知怎的,他们是作为孩子被加进来的

或者忽略这一点,然后执行此操作以过滤掉其他节点类:

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

尝试找出CCNode对象存在的原因。不知怎的,他们是作为孩子被加进来的

或者忽略这一点,然后执行此操作以过滤掉其他节点类:

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

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

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

是的,我有意在其中设置了CCNode对象。我认为for-in循环给了我所有的uniqueclass对象。如果它给我所有的CCNode对象,它还有什么用呢?我可以在没有for-in循环的情况下遍历子对象,并在其中使用
-isKindOfClass
方法。for-in循环只是一个快速迭代器。仅此而已。for in返回self.children中的所有对象。将接收指针强制转换为MyUniqueClass*不会改变您获得的对象。是的,我有意在那里设置了CCNode对象。我认为for-in循环给了我所有的uniqueclass对象。如果它给我所有的CCNode对象,它还有什么用呢?我可以在没有for-in循环的情况下遍历子对象,并在其中使用
-isKindOfClass
方法。for-in循环只是一个快速迭代器。仅此而已。for in返回self.children中的所有对象。将接收指针强制转换为MyUniqueClass*不会改变您获得的对象。谢谢,我不知道。谢谢,我不知道。