2014-02-17 134 views
0

在Objective C中,有一个Class结构,它充当指向任何类实现的指针。在Objective C,它的定义为:Objective C铸造类结构指针指向具体类

typedef struct objc_class *Class; 

我想上课的阵列,我试图通过Array类迭代以及执行静态函数。一些示例代码如下:

//Each class is subclassed from the same abstract class with a function specialStaticFunction 
NSArray *array = [[NSArray alloc] initWithObjects:Class1, Class2, Class3]; 

for(Class tempClass in array) 
    [tempClass specialStaticFunction]; 
} 

当运行该代码时,我得到警告,因为不是每个类都有一个名为specialStaticFunction的函数。所以我想知道如何建立一个类或者如何有人可能绕过这个警告。

+1

我不认为这实际上是你得到的错误。这很好,它发送的信息并不是每个班级都会回应。什么是实际的错误? – Chuck

+0

“我得到警告是因为不是每个类都有一个名为specialStaticFunction的函数”不是。编译器不检查发送到“Class”类型的消息。 – newacct

+0

另外,你的代码是错误的,因为'initWithObjects:'的参数必须以'nil'终止。 – newacct

回答

0

使用id而不是Class这里

for(id tempClass in array) 

这应该从编译器中删除的警告,但你仍然需要确保每个对象实现该方法,否则您的应用程序会崩溃。

+0

谢谢。这工作。 – FireDragonMule

+0

使用'isKindOfClass'进一步检查 – preetam