【发布时间】:2014-07-31 09:25:11
【问题描述】:
如何快速进行异步回调?我正在为我的应用程序编写一个小框架,因为它应该在 iOS 和 OS X 两者上运行。所以我将非设备特定的主要代码放入这个框架中,该框架还处理对我的在线 api 的请求。显然,我还希望应用程序的 GUI 以及我的 ViewControllers 在 api 请求完成后立即做出反应。在 Objective-C 中,我通过将包含必须在 id 变量中调用的函数的视图和函数本身保存在选择器变量中来做到这一点。然后我使用以下代码调用了该函数:
SEL selector = callbackMethod;
((void (*)(id, SEL))[callbackViewController methodForSelector:selector])(callbackViewController, selector);
我怎样才能快速完成这项工作?或者有更好的方法吗?
非常感谢您的帮助!
【问题讨论】:
-
只是为了让您知道,您可以将 Selector 声明为字符串。示例: var mySelector : SEL = "somefunction:"
-
@tyt_g207 谢谢!这对我有用!请将此作为答案发布,以便我接受:)
-
您的 Objective-C 代码可以简化为
((void (*)(id, SEL))objc_msgSend)(callbackViewController, selector);或只是[callbackViewController performSelector:selector]; -
继续@newacct 注释,在Swift 中可以使用下面的代码
viewController.performSelector(onMainThread: selector, with: nil, waitUntilDone: false)
标签: ios swift xcode macos asynchronous