1.簡介swift
和c語言不一樣,在swift中結構體和類有相同的結構,都具備屬性和方法數組
可是不要求定義和實如今兩個文件中spa
2.類與結構體的對比指針
class CustomerManger {orm
var name:String!對象
var Pid:Int!繼承
}內存
var c1 = CustomerManger()//實例化字符串
struct Point {it
var x:Int
var y:Int
}
var p1 = Point(x: 2, y: 4)//實例化
3.類的屬性與調用
class Dog {
var name: String!
var age: Int!
init(){
name = "hua hua"
age = 3
}
func show(){
print("\(name),\(age)")
}
}
var d1 = Dog()
d1.show()//跟oc不一樣,swift調用方法是點語法
d1.name = "xiao hei"
d1.age = 5
d1.show()
4.結構體成員的默認構造器
struct Point {
var x:Int
var y:Int
}
var p1 = Point(x: 10, y: 20)//
print("\(p1.x),\(p1.y)")
5.結構體和枚舉都是值類型,賦值過程是值拷貝的
struct Point {
var X:Int
var y:Int
}
var p1 = Point(X: 10, y: 20)
var p2 = p1
print("\(p1.X),\(p1.y)")
print("\(p2.X),\(p2.y)")
print("--------")
p1.X = 100
p1.y = 200
print("\(p1.X).\(p1.y)")
print("\(p2.X),\(p2.y)")//p1值改變,而p2值不變
//實例
enum Direction {
case east,west,south,north
}
var d1 = Direction.east
var d2 = d1
print("\(d1)")
print("\(d2)")
print("---------")
d1 = .north
print("\(d1)")
print("\(d2)")
7.類是引用類型
class Dog {
var name: String
var age: Int
init(){
name = "hua hua "
age = 2
}
func show(){
print("\(name),\(age)")
}
}
var d1 = Dog()
var d2 = d1
d1.show()
d2.show()
print("----------")
d1.name = "xiao hei"
d1.age = 4
d1.show()
d2.show()//傳遞的是地址,因此值都改變
print(d1===d2)//是不是同一個對象,true
var d3 = Dog()
print(d1===d3)//false
注意:swift中,一個引用類型的實例與c語言中的指針相似,不一樣的是並非直接指向內存中的某個地址,
並且也不要求使用星號來代表在建立一個引用,swift中這些引用與其餘的常量或變量的定義方式相同
8.類與結構的選擇
結構體適用條件:
結構體主要目的是用來封裝少許相關簡單數據值,並且在實例的賦值或傳遞中,封裝的數據將會被拷貝而不是被引用。
結構體也沒有繼承這一特性
9.在oc中,字符串,數組,字典都是以類的形式實現,而在swift中以值傳遞方式不一樣