Objective-C中的函数指针问题

Objective-C中的函数指针问题,objective-c,function-pointers,Objective C,Function Pointers,因此,我尝试将一系列方法存储在一个数组中(如果这样做有意义的话) 我试图做的是拥有一个stuff数组,并根据数组中对象的类型调用某个方法。而不是一堆if语句,比如: if ([[myArray objectAtIndex:0] type] == robot]) { //Do what robots do... } else if (...) { } else { } SEL selectors[3]; selectors[0] = @selector(rotate); selecto

因此,我尝试将一系列方法存储在一个数组中(如果这样做有意义的话)

我试图做的是拥有一个stuff数组,并根据数组中对象的类型调用某个方法。而不是一堆if语句,比如:

if ([[myArray objectAtIndex:0] type] == robot]) {
     //Do what robots do...
}
else if (...) {
}
else {
}
SEL selectors[3];
selectors[0] = @selector(rotate);
selectors[1] = @selector(move);
selectors[2] = @selector(attack);

...

[self performSelector:selectors[n]];
把它放在计时器里,我希望能做成这样:

pointer[[[myArray objectAtIndex:0] type]]; //This should invoke the appropriate method stored in the pointer.
现在上面的代码是(第一段代码):

一元'&'操作数所需的左值

如果您需要任何澄清,请询问


另外,为了让您知道,我调用的所有方法都是void类型,没有任何参数。

您不能使用
&
运算符从Objective-C函数中生成函数指针

您将需要调查:


这些都可以做你想做的。如果您不熟悉选择器(这是一个基本概念,您需要很多),请务必阅读选择器(编译器指令
@selector
SEL
类型)。块是相当新的(从Mac OS X 10.6和iOS 4开始提供),它们将在需要目标/选择器的地方为您节省大量工作,n Mac OS X和iOS早期版本上的调用或回调函数。

如果需要传递对C函数的引用,但在处理Objective-C对象上的方法时,您应该真正使用函数指针,并且使用
SEL
类型

然后,您的代码将类似于:

if ([[myArray objectAtIndex:0] type] == robot]) {
     //Do what robots do...
}
else if (...) {
}
else {
}
SEL selectors[3];
selectors[0] = @selector(rotate);
selectors[1] = @selector(move);
selectors[2] = @selector(attack);

...

[self performSelector:selectors[n]];

我已经运行了你的代码。应该是选择器[3]而不是*选择器[3],但谢谢!哎呀,接得好。这就是我在没有测试的情况下复制过去编辑的结果。固定的