1.結(jié)構(gòu)體總是通過被復(fù)制的方式在代碼中傳遞辞居,因此不要使用引用計(jì)數(shù)
2.結(jié)構(gòu)體有默認(rèn)的成員逐一構(gòu)造器,但是類沒有
例如:
structiPhone {
varlength:CGFloat=0
varwidth:CGFloat=0
}
variPhone5 =iPhone(length:320, width:568)
3.值類型被賦予一個(gè)變量蛋勺,常量或者本身被船體給一個(gè)函數(shù)的時(shí)候瓦灶,實(shí)際上操作的是其拷貝
4.引用類型在被賦予到一個(gè)變量,常量或者被傳遞到一個(gè)函數(shù)的時(shí)抱完,操作的是引用贼陶,并不是拷貝,引用的是已存在的實(shí)例本身而不是其拷貝
這里是分割線--------------------------------------------------------------------
我來說一下我對(duì)類和結(jié)構(gòu)體(也就是引用類型和值類型)的理解吧:
在這么一個(gè)情景中:
我和小明相約一起在操場(chǎng)上玩遙控車巧娱。小明是富二代碉怔,我是一個(gè)窮屌絲,買不起遙控車禁添,主要關(guān)注的遙控車而不是遙控器撮胧,遙控器的作用是為做一些改變
//遙控車
classRadioControlledCar {
varspeed:Int=Int()
init(speed:Int){
self.speed= speed
}
}
//遙控器
classRemoteControl {
varcar:RadioControlledCar!
}
引用類型:小明壕性大發(fā),我們一人一個(gè)遙控器老翘,但是美中不足的是:越有錢越摳芹啥,他讓我和他玩同一輛遙控車
(1).當(dāng)我讓四驅(qū)車加速前進(jìn)的時(shí)候,小明遙控器對(duì)應(yīng)的四驅(qū)車是不是也在加速前進(jìn)了铺峭。注意:現(xiàn)在是我來操作遙控車
varxm_s_Control =RemoteControl()
varmy_Control =RemoteControl()
xm_s_Control.car=RadioControlledCar(speed:0)
my_Control.car=xm_s_Control.car
my_Control.car.speed=50
println(xm_s_Control.car.speed)//小明的角度來看汽車速度為:50
println(my_Control.car.speed)//我的角度來看汽車速度:50
角度不同而已墓怀,汽車都是同一輛汽車:
(2).現(xiàn)在小明感覺不高興了,你給我車加速逛薇,那我就偏用我遙控器來減速捺疼。注意:現(xiàn)在是小明來操作遙控車
xm_s_Control.car.speed=20
println(xm_s_Control.car.speed)//小明的角度來看汽車速度為:20
println(my_Control.car.speed)//我的角度來看汽車速度:20
值類型:小明感覺自己的車被操縱了,簡直不能忍永罚,果斷也給我買了一輛一模一樣的遙控車啤呼,讓我自己到邊上去玩。
//遙控車
structRadioControlledCar_S {
varspeed:Int=Int()
}
//遙控器
classRemoteControl_S {
varcar:RadioControlledCar_S!
init(){
}
}
varxm_s_control_s =RemoteControl_S()
varmy_Control_s =RemoteControl_S()
xm_s_control_s.car=RadioControlledCar_S(speed:20)
my_Control_s.car=xm_s_control_s.car
my_Control_s.car.speed=50
println(my_Control_s.car.speed)//我的角度來看汽車速度:50
println(xm_s_control_s.car.speed)//小明的角度來看汽車速度沒有發(fā)生改變還是為:20
xm_s_control_s.car.speed=80
println(xm_s_control_s.car.speed)//小明的角度來看汽車速度為:80
println(my_Control_s.car.speed)//我的角度來看汽車速度為:50
己很明顯我們之間相互沒有干擾摩擦呢袱,他玩他的官扣,我玩我的,就這樣羞福,有一個(gè)土豪朋友惕蹄,免費(fèi)得到一輛遙控車。
這是我在yy了