【发布时间】:2014-08-22 19:22:26
【问题描述】:
我想写这样的东西:
- (int)someMethod:(SEL)theSelector {
NSObjet *i = func(...);
i = theSelector(i); //replace this
i = func2(...);
return i;
}
所以我有一些我知道并且可以简单编写的常量函数。我还有一个未定义的函数,我应该将它作为参数传递。
我不能使用像 performSelector: 这样的结构,因为它们甚至在另一个 NSRunLoop 循环中执行。
由于特定代码,我无法将块传递给此函数。
如何解决这个问题?看来objc_msgSend 可能有帮助,但我不知道如何正确使用它。
【问题讨论】:
-
您应该重新阅读文档。
performSelector:相当于直接调用该方法,但在您事先不知道确切选择器的情况下很有用。它不会将调用延迟到运行循环的下一次迭代。如果是这样,它就不能返回一个值,因为它是未定义的。 -
天啊。如何将选择器作为参数传递?!我已经通过了。没看到就买眼镜。
-
致史蒂夫·马德森,我知道
performSelector:不等同于直接调用,因为它不会在下一个代码字符串之前返回结果。还是performSelector:与performSelector:...afterDelay:不同? -
对 thierryb,删除你愚蠢的标记“可能重复”。如果你看不懂,请阅读以下内容。你给了我一个关于如何将一个方法传递给另一个方法的链接。但是我已经通过它并询问如何使用它。所以你的链接完全没用
标签: ios function selector param performselector