【问题标题】:UNUserNotificationCenterDelegate delegate method "nearly matches optional requirement"UNUserNotificationCenterDelegate 委托方法“几乎符合可选要求”
【发布时间】:2016-09-15 16:18:55
【问题描述】:
我正在实施
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: () -> Void) {
但是我收到了来自编译器的“几乎匹配可选要求”警告。我的声明有什么问题?我直接从文档中复制了它!
【问题讨论】:
标签:
ios
swift
usernotifications
【解决方案1】:
这是@escaping 属性。它没有显示在文档中。但它 显示在标题中。那是复制的地方!这是正确的声明:
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
【讨论】:
-
从here的cmets中复制的:@escaping的意思是“这个闭包可以稍后执行”。编译器可以轻松优化映射、过滤器等常用的非转义闭包,Swift 3 已将其设为默认值。当某个任务完成时,所有的完成处理程序都会被执行——稍后,所以我们需要为 Swift 3 中的所有完成处理程序注解 @escaping