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类型,没有任何参数.
您不能只使用&运算符从Objective-C函数中生成函数指针.
你会想看看:
任何这些都可以做你想要的.如果您不熟悉选择器(@selector编译器指令和SEL类型),那么一定要阅读它(这是一个你需要很多的基本概念).块是相当新的(自Mac OS X 10.6和iOS 4以来可用),它们将为您节省大量工作,您需要在早期版本的Mac OS X和iOS上使用目标/选择器,NSInvocation或回调函数.
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |