1.结构体总是通过被复制的方式在代码中传递,因此不要使用引用计数
2.结构体有默认的成员逐一构造器,但是类没有
例如:
structiPhone {
varlength:CGFloat=0
varwidth:CGFloat=0
}
variPhone5 =iPhone(length:320, width:568)
3.值类型被赋予一个变量,常量或者本身被船体给一个函数的时候,实际上操作的是其拷贝
4.引用类型在被赋予到一个变量,常量或者被传递到一个函数的时,操作的是引用,并不是拷贝,引用的是已存在的实例本身而不是其拷贝
这里是分割线--------------------------------------------------------------------
我来说一下我对类和结构体(也就是引用类型和值类型)的理解吧:
在这么一个情景中:
我和小明相约一起在操场上玩遥控车。小明是富二代,我是一个穷屌丝,买不起遥控车,主要关注的遥控车而不是遥控器,遥控器的作用是为做一些改变
//遥控车
classRadioControlledCar {
varspeed:Int=Int()
init(speed:Int){
self.speed= speed
}
}
//遥控器
classRemoteControl {
varcar:RadioControlledCar!
}
引用类型:小明壕性大发,我们一人一个遥控器,但是美中不足的是:越有钱越抠,他让我和他玩同一辆遥控车
(1).当我让四驱车加速前进的时候,小明遥控器对应的四驱车是不是也在加速前进了。注意:现在是我来操作遥控车
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).现在小明感觉不高兴了,你给我车加速,那我就偏用我遥控器来减速。注意:现在是小明来操作遥控车
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)//小明的角度来看汽车速度没有发生改变还是为:20
xm_s_control_s.car.speed=80
println(xm_s_control_s.car.speed)//小明的角度来看汽车速度为:80
println(my_Control_s.car.speed)//我的角度来看汽车速度为:50
己很明显我们之间相互没有干扰摩擦,他玩他的,我玩我的,就这样,有一个土豪朋友,免费得到一辆遥控车。
这是我在yy了
网友评论