【发布时间】:2016-02-03 13:13:40
【问题描述】:
有没有办法将函数指针传递给 Objective C 方法,然后让该方法修改函数指针以指向其他地方的 C 函数?
创建一个接受函数指针的方法很简单:
- (void)doSomethingWithFunctionPointer:(void(*)(/* args go here */))functionPointer;
然后我可以在 doSomethingWithFunctionPointer 中调用该函数,只需调用:
if (functionPointer)
{
functionPointer();
}
但是,如果我真的想更改 functionPointer 以指向 doSomethingWithFunctionPointer 中的其他内容,以便该方法之外的任何代码都可以调用更改后的函数指针来调用 doSomethingWithFunctionPointer 指向的函数,该怎么办?
我知道这可能是在 Objective C 中如何不做事的一个典型例子(特别是考虑到我们有块和没有的东西)。在这一点上更多的是好奇。听起来我几乎需要一个函数指针指针,但我不确定它是如何工作的,如果可能的话。
【问题讨论】:
-
如果我理解你的情况,你说的是函数指针类型的变量。你总是可以改变指针指向的值,对吧?
标签: objective-c c pointers