Objective-C中的函数指针问题

Dai*_*air 0 function-pointers objective-c

所以我试图在一个数组中存储一系列方法(如果这是有道理的).

void *pointer[3];
pointer[0] = &[self rotate];
pointer[1] = &[self move];
pointer[2] = &[self attack];
//...
Run Code Online (Sandbox Code Playgroud)

我想要做的是有一个东西数组,并根据数组中对象的类型,调用某个方法.而不是有一堆if声明说:

if ([[myArray objectAtIndex:0] type] == robot]) {
     //Do what robots do...
}
else if (...) {
}
else {
}
Run Code Online (Sandbox Code Playgroud)

在计时器中有这个我希望这样做:

pointer[[[myArray objectAtIndex:0] type]]; //This should invoke the appropriate method stored in the pointer.
Run Code Online (Sandbox Code Playgroud)

现在上面的代码说(第一个代码块):

Lvalue需要作为一元'&'操作数.

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

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

puz*_*zle 5

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

你会想看看:

任何这些都可以做你想要的.如果您不熟悉选择器(@selector编译器指令和SEL类型),那么一定要阅读它(这是一个你需要很多的基本概念).块是相当新的(自Mac OS X 10.6和iOS 4以来可用),它们将为您节省大量工作,您需要在早期版本的Mac OS X和iOS上使用目标/选择器,NSInvocation或回调函数.