您的位置:首页 > 移动开发 > Swift

swift 新特性 -面向对象

2017-03-13 22:09 162 查看
因为对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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: