回答
如果你事先知道方法:
如果你事先不知道的方法名稱:
SEL selector = NSSelectorFromString(someSelectorStringYoureGiven);
[self performSelector:selector withObject:nil];
兩個例子假設你的函數不接受任何參數,也不需要在不同的線程上執行,也不需要延遲執行。這些條件的所有組合都有很多變體(對於更復雜的情況,還有NSInvocation)。在xcode的文檔中搜索performSelector
以查看所有變體。
完美: 'SEL myAction = nil; .. some stuff .. myAction = @selector(actionWalk); ..一些東西.. [self performSelector:myAction];' 謝謝@Jarret Hardie – BQuadra 2011-04-27 10:02:01
另請參閱objc_msgSend()
。你會設置一個SEL
選擇器變量。
你幾乎從不想用'objc_msgSend'直接搞亂。這就像用大刀飛撲蒼蠅一樣。有些情況下你想使用它,但它們非常特殊。 – Chuck 2011-04-26 23:14:51
不是'objc_msgSend()'與'-performSelector:withObject:'差不多,但是開銷較少? (真的很好奇。) – 2011-04-26 23:18:06
@雷諾茲:在一定程度上。問題是'objc_msgSend'更靈活,更容易被濫用而不會意識到,所以直接使用它是一種不好的習慣。我的措辭可能有點尖銳,但我不希望看到無辜的Googlezens不必要地在腳下自己射擊。 – Chuck 2011-04-26 23:33:17
我的猜測是你想要的;
[self performSelector:@selector(aMethodDeclaredInMyClass)]
閱讀有關動態調度的文檔;
- 1. 函數指針指向一個函數指針的函數
- 2. 指針?指針函數?
- 3. 陣列的函數指針的指針
- 4. 指向結構函數指針的函數指針
- 5. 函數指針
- 6. 函數指針
- 7. 函數指針
- 8. 函數指針
- 9. 函數指針
- 10. 函數指針
- 11. 指向函數的指針
- 12. C++中函數指針的指針
- 13. 函數指針數組指針用作函數的返回值
- 14. 將指針指向成員函數作爲函數指針
- 15. 指向函數指針
- 16. C - 指向返回字符串函數的指針函數的指針數組
- 17. C函數指針鑄造空指針
- 18. C++函數指針
- 19. NULL函數指針
- 20. Python函數指針
- 21. 函數和指針
- 22. MPI +函數指針?
- 23. C#函數指針
- 24. Golang,指針,函數
- 25. Reg函數指針
- 26. 函數與指針
- 27. C指針函數
- 28. c函數指針
- 29. 指針函數C++
- 30. 函數指針和函子
查看在Objective-C選擇器。谷歌的第一個結果給你你需要的一切。 – gd1 2011-04-26 23:02:35