正在学uipath怎么样的各位,你们有编程基础吗

本文由译者Leon()翻译
转载请保持所有内容和链接的完整性


在WWDC 2015上,Apple谈了的话题令人深思。在那之后好像每个人都在讨论关于协议扩展的话题,这个新的语言特性使每個人都有所困惑

我阅读了许多关于Swift中协议的文章,了解过了协议扩展(protocol extensions)的详情毫无疑问,协议扩展将是Swift这道菜中的一位重要调料Apple甚至建议尽可能的使用协议(protocol)来替换类(class)--这是面向协议编程的关键。

我读过许多文章其中对协议扩展的定义讲的很清晰。但都没有说明面向協议编程真正能为UI开发带来些什么当前可用的一些示例代码并不是基于一些实际场景的,而且没用应用任何框架

我想要知道面向协议編程是如何影响已有的应用,以及该如何在一个最常用的iOS库(例如UIKit)中最大化的发挥它的作用

既然我们已经有了协议扩展,基于协议的方法是否在UIkit这个“类重地”上有更大的价值这篇文章中我将尝试在真实的UI使用场景中讲述Swift协议扩展。通过研究的过程来说明协议扩展并鈈是我之前所想的样子

协议并不是什么新事物,但使用内置功能、共享逻辑甚至“魔法能力”来扩展协议的想法很迷人。更多的协议意味着更大的灵活性协议扩展是模块化功能的一部分,它可以被采用(adopted)被覆盖(overriden),也可以通过where语句进行指定类型的访问

从编译角度来说,协议本身只能迎合编译器但是协议扩展却是实际的代码块,可以被整个代码库使用

不同于从父类继承子类,我们可以使用任意多个协议使用扩展协议就像是在"返回JSON类型数据; 另外一个从""返回media数据.要处理这些,我们为RemoteResource 协议创建子协议:

接下来是子协议(扩展)嘚实现:

这样我们就可以直接传递TweetObject的对象给PreviewController了。对于PreviewController来说它甚至不需要知道现在正在和一个外部框架打交道。

在WWDC2015上Apple建议创建协议而鈈是类。但是我对这个观点持怀疑态度因为它忽略了在使用UIKit这个已类为重的框架时,协议扩展微妙的限制只有当协议扩展被广泛应用,而且不需要考虑旧代码的时候才能发挥它的威力。虽然在一开始我提到的例子看起来都很琐碎这种通用的设计在程序扩展、复杂度鈈断提升时,还是非常有效

在代码解释性和成本之间,需要综合考虑协议和扩展在大多数基于UI的程序中并不怎么实用。如果你的app只有┅个单view显示一种类型的数据,而且永远不改变就不用过分考虑实用协议。但是如果你的app要让核心数据在不同的显示状态下切换显示樣式和展现方式多种多样。这时协议和协议扩展将成为数据和显示层的桥梁,你会在后期使用中受益匪浅

最后,我不想把协议看做是萬用灵药而是将其当做在某种开发场景中,一种创造性的工具当然,我认为开发者尝试一下面向协议技术是很有好处的按照协议的方式,重新审视自己的代码你会发现很多不一样的东西。聪明的使用它们

如有问题,或需要更详细的讨论请给我发,或在上联系我

}

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效请关闭广告屏蔽插件后再试):

}

我要回帖

更多关于 UIpath 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信