iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了当协议的可空性发生变化时,支持多个iOS SDK版本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

MCSessionDelegate协议在iOS 11中已更改 - (void) session:(MCSession *)session didFinishReceivingresourceWithName:(NSString *)resourcename fromPeer:(MCPeerID *)pee
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分支 – 但是无论如何你都会这样做,对吧?

大佬总结

以上是大佬教程为你收集整理的当协议的可空性发生变化时,支持多个iOS SDK版本全部内容,希望文章能够帮你解决当协议的可空性发生变化时,支持多个iOS SDK版本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。