首页 > 解决方案 > swift 3中的后台任务

问题描述

什么相当于对后台任务的选择器做出响应?我在 Objective-C 中找到了代码。我试图在 Swift 中做到这一点。

这是Objective-C代码:

if ([application respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]){
    bgTaskId = [application beginBackgroundTaskWithExpirationHandler:^{
    })

SWIFT代码:

if application.responds(to: #selector(self.beginBackgroundTaskWithExpirationHandler)) {
    bgTaskId = application.beginBackgroundTask(expirationHandler: {() -> Void in
        print("background task \(UInt(bgTaskId!)) expired")
    })

这是说BackgroundTaskManager 没有成员'beginBackgroundTaskWithExpirationHandler'。

我们可以在 Swift 3 中复制的确切内容是什么?

标签: swiftbackground-task

解决方案


除非您尝试支持 iOS 3 或更早版本,否则无需检查选择器是否存在,因为它是在 iOS 4.0 中添加的。

但 Swift 选择器将是:beginBackgroundTask(expirationHandler:).

这是尝试将 Objective-C API 转换为 Swift 时的一个简单技巧。在 Xcode 或在线获取 API 文档。选择 Objective-C API。找到您要转换的方法。然后将文档切换到 Swift API。在这种情况下,您现在将看到相同的方法,但在 Swift 中。


推荐阅读