Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift 3/Xcode 8 beta 6中未调用UIApplicationShortcutItem的AppDelegate函数_Ios_Xcode_Swift3_Uiapplicationdelegate_Uiapplicationshortcutitem - Fatal编程技术网

Ios 在Swift 3/Xcode 8 beta 6中未调用UIApplicationShortcutItem的AppDelegate函数

Ios 在Swift 3/Xcode 8 beta 6中未调用UIApplicationShortcutItem的AppDelegate函数,ios,xcode,swift3,uiapplicationdelegate,uiapplicationshortcutitem,Ios,Xcode,Swift3,Uiapplicationdelegate,Uiapplicationshortcutitem,Swift 3转换器改变了这条(功能完美)线路: 为此: func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) { 但两者都发出了警告 实例方法“application(:handleActionWithIdentifier:for:completionHandle

Swift 3转换器改变了这条(功能完美)线路:

为此:

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
但两者都发出了警告

实例方法“application(:handleActionWithIdentifier:for:completionHandler:)”与协议“UIApplicationLegate”的“可选要求”应用程序(:handleActionWithIdentifier:for:completionHandler:)”几乎匹配

并提供使函数
私有化
,或添加
@nonobjc
的解决方案

无论该功能是否保留警告、是否恢复为Swift 2语法,或者以任何建议的方式修复,使用快捷方式启动应用程序都不会触发该功能


这也未列为已知问题。有人有什么想法吗?

苹果在Swift 3 Beta 6中引入了
@escaping
标签。 默认情况下,所有闭包现在都是无转义的,因此如果您想要转义的闭包,则需要给出该标记。出于某些原因,swift translator没有添加此标记,但根据下面链接中的文档,您需要在关闭之前添加此标记

将闭包添加到我的代码中删除了警告:

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler:@escaping (Bool) -> Void)
我没有测试它,因此它可能只是出于其他原因删除了警告。

的签名现在是:

注意,根据,完成处理程序现在是转义的。此属性更改闭包参数的类型签名,而闭包参数又会更改作为参数的方法的类型签名,因此不会调用具有旧声明的方法

一般来说,编译器警告/修复对于捕获所有类型签名更改(尤其是beta之间的更改)来说并不太好。您最好返回SDK头(或者更确切地说,它生成的Swift接口)或Apple站点上/Xcode中定义问题方法的类/协议,以便查看其新定义

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler:@escaping (Bool) -> Void)
optional func application(_ application: UIApplication, 
          performActionFor shortcutItem: UIApplicationShortcutItem,
                      completionHandler: @escaping (Bool) -> Void)