Objective-c函数指针

Objective-c函数指针,objective-c,function,pointers,Objective C,Function,Pointers,我需要做这样一件事: id myFunction = aMethodDeclaredInMyClass; [self myFunction] 感谢您的帮助 如果您事先知道该方法: [self performSelector:@selector(myMethod) withObject:nil]; SEL selector = NSSelectorFromString(someSelectorStringYoureGiven); [self performSelector:selector

我需要做这样一件事:

id myFunction = aMethodDeclaredInMyClass;

[self myFunction]

感谢您的帮助

如果您事先知道该方法:

[self performSelector:@selector(myMethod) withObject:nil];
SEL selector = NSSelectorFromString(someSelectorStringYoureGiven);
[self performSelector:selector withObject:nil];
如果您事先不知道方法名称:

[self performSelector:@selector(myMethod) withObject:nil];
SEL selector = NSSelectorFromString(someSelectorStringYoureGiven);
[self performSelector:selector withObject:nil];
这两个示例都假定您的函数不接受任何参数,也不需要在不同的线程上执行,也不需要延迟执行。这些条件的所有组合都有许多变体(对于更复杂的情况,NSINVOLOCATION)。在xcode文档中搜索PerformSelect以查看所有变体。

另请参见。您需要设置一个
SEL
选择器变量。

我猜是您想要的

[self performSelector:@selector(aMethodDeclaredInMyClass)]
阅读动态派工单据


请参见Objective-C中的选择器。google中的第一个结果会为您提供所需的一切。您几乎不想直接与
objc\u msgSend
混在一起。就像用大刀打苍蝇一样。在某些情况下,您希望使用它,但它们非常特殊。
objc\u msgSend()
-performSelector:withObject:
是否大致相同,但开销较小?(真的很好奇。)@Alex Reynolds:在某种程度上。问题是,
objc\u msgSend
更灵活,更容易在没有意识到的情况下被滥用,因此直接使用它是一种坏习惯。我的措辞可能有点尖刻,但我不想看到无辜的谷歌人不必要地朝自己的脚开枪。你有没有关于它如何被误用的例子?现在我真的很好奇。我不知道它被认为是多余的。@Alex Reynolds:如果
objc\u msgSend\u stret
更合适的话,情况会怎样?如果您开始考虑这些极端情况,您可能会首先挫败使用Obj-C的目的。:)完美:
SEL myAction=nil。。一些东西。。myAction=@选择器(actionWalk)。。一些东西。。[自我执行选择器:myAction]谢谢@Jarret Hardie