swift 新特性 -面向对象

来源:互联网 发布:淘宝怎么加入一淘 编辑:程序博客网 时间:2024/05/21 08:57

因为对swift的认识还不够深入,公司需要换到swift编程,只是看了几个swift写的别人的工程,自我感觉良好.再见

在项目启动时,也是为了赶进度就按照以前OC的做法(面向对象编程),只是觉得只是语法不同而已,不过尔尔.

逐渐在项目中搭建起各种MVC,各种继承,KVO

在项目日益壮大到两三个星期的时候发现,已经把自己前面的代码忘了差不多,每次为了修改一个实现方法,必须把整个类重新认识一遍,这里花费的时间太多太多.对于快速迭代来说,可不funny.

但是听很多前辈说swift更加简洁,方法,很swift,我是没有一点感觉,所以开始在网上搜索关于swift的资料,希望改变现在的困境.

后来慢慢了解到swift跟以前OC最大的差异就在于swift是<面向协议编程>简称:POP,而OC则是<面向对象编程>简称:OOP

下面是我对POP的简单理解,日后有更深的理解会回来补全:

首先看看swift中,苹果做了哪些努力,作为swift面向协议的主力,系统提供的协议就有55种,如图:

在码农日常中,必须记住的是,"组合优于继承".意思就是多把具体的功能拆分,方便以后复用,继承虽好不能贪杯,当多于三个类继承一个父类,就要考虑重构他.

当然POP正好解决这种耦合,先了解POP怎么使用:


在swift中协议被赋予更强大的能力,可让值传递类型继承(特指:结构体,枚举)

例子:

struct person : ExpressibleByArrayLiteral {    var name = ""    var id = ""    typealias Element = String    init(arrayLiteral elements: Element...) {        if elements.count == 2{            name = elements[0]            id = elements[1]        }    }}//自定义 结构体比较符号func == (p1: person,p2: person) -> Bool{    return p1.id == p2.id}let p1:person = ["Bruce","10"]print(p1)let p2:person = ["Bruce","10"]print(p2)print(p1 == p2)






0 0