Swift類與結(jié)構(gòu)體的區(qū)別
struct People {
var name : String
init(name : String) {
self.name = name
}
}
var p = People.init(name: "張三")
var p2 = p
p2.name = "lisi"
print(p.name,p2.name)
class Car {
var carName : String = ""
init(name : String) {
self.carName = name
}
}
var c = Car.init(name: "寶馬")
var c2 = c
c2.carName = "奔馳"
print(c.carName,c2.carName)
屏幕快照.png
- 結(jié)構(gòu)體是值類型轰驳,其 實例將會被賦予變量或者常量和被函數(shù)調(diào)用時被復(fù)制
- 結(jié)構(gòu)體中的成員可以包括屬性脐瑰、類型別名楞艾、數(shù)組、其他結(jié)構(gòu)體和枚舉聲明
- 結(jié)構(gòu)體聲明不能包含析構(gòu)器或者協(xié)議聲明逞敷,但是可以包括任意協(xié)議的實現(xiàn),不能繼承類煌贴、枚舉、其他結(jié)構(gòu)體
還有的區(qū)別就是類是屬于面向?qū)ο缶幊舔哒梗Y(jié)構(gòu)體屬于面向協(xié)議的編程,所謂面向協(xié)議編程其實就是面向?qū)ο蟮纳壯凇T趕wift中推薦使用的是使用結(jié)構(gòu)體纵顾,類在swift中不處于主流的地位,還有就是結(jié)構(gòu)體也能夠?qū)崿F(xiàn)類的全部功能栋盹,結(jié)構(gòu)體更模塊化施逾,默認(rèn)實現(xiàn)初始化方法并且不用考慮ARC