当协议的可空性发生变化时,支持多个iOS SDK版本
MCSessionDelegate协议在iOS 11中已更改
- (void) session:(MCSession *)session didFinishReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID atURL:(NSURL *)localURL withError:(nullable NSError *)error; 至 - (void) session:(MCSession *)session didFinishReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID atURL:(nullable NSURL *)localURL withError:(nullable NSError *)error; 这导致在Swift中实现此委托时使用 func session(_ session: MCSession,didFinishReceivingResourceWithName resourceName: String,fromPeer peerID: MCPeerID,at localURL: URL?,withError error: Error?) {} 不会在Xcode 8上编译;和 func session(_ session: MCSession,at localURL: URL,withError error: Error?) {} 不会在Xcode 9上编译. 在这两种情况下,Xcode都显示以下错误:
如何在两个版本上编译? 解决方法
我不明白为什么这是一个问题.
如果使用Xcode 8构建,则可以使用旧方法签名,构建应用程序并将其提交到AppStore.该应用程序将针对iOS10 SDK构建,并将在iOS10和iOS11设备上运行. 当您切换到Xcode 9时,您可以切换到新方法签名,并且(当Xcode 9不在测试版时)提交到AppStore.该应用程序是针对iOS11 SDK构建的,可以在iOS11设备上运行. 唯一的困难是你可能想要同时使用Xcode 8(现在发布应用程序更新)和Xcode 9(在iOS11发布后准备应用程序版本)的短暂时期.你需要在你的git repo中有一个单独的iOS11分支 – 但是无论如何你都会这样做,对吧? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |