6

我希望能够在需要选择器作为参数的任何地方定义一个内联匿名选择器。

这是可能的,还是我必须把它吸起来并定义一个方法?

背景:在我的 iPhone 应用程序中,我需要从另一个线程更新我的 UI。为此,我使用performSelectorOnMainThread:withObject:waitUntilDone:但是,我希望能够获得此功能而无需定义其他方法。

4

1 回答 1

15

很不幸的是,不行。这个想法是自相矛盾的——选择器就是一个名字。就是这样。它没有定义任何功能。

直到最近,当块被引入 Mac OS X 时,Objective-C 才具有任何类型的匿名函数。可以通过似是而非的块在 iPhone 上使用它们,但它们仍然没有集成到那里的 API 中。

2014 年更新

这个答案在 2009 年是正确的,但现在 Apple 已经很好地将块集成到 iOS 框架中。它们现在非常普遍地用于回调,并且在 Grand Central Dispatch 并发库中大量使用。

于 2009-11-23T00:58:09.853 回答