swift和java一样,看不到指针的语法,那么swift在传值时到底是复制了一份传过去还是传引用(指针)呢
先说结论 与java类似,在传基本类型时是拷贝一份副本传过去,如String, Int等,在传实例时传的则是引用(指针)。在方法中改变副本的值对原值无影响,但是在方法中改变传入实例的引用会对原实例产生影响。代码如下:
let str = "first"
let number = 0
func change(var temp:Int) -> Void {
temp = 666
}
change(number)
print("number is \(number)")
class MyClass {
var age = 0
}
let myClass = MyClass()
myClass.age = 10
print("myclass.age is\(myClass.age)")
// myclass.age is 10
func change(var temp:MyClass) -> Void {
temp.age = 106
temp = MyClass()
temp.age = 200
// temp = 666
}
change(myClass)
print("myclass.age is\(myClass.age)")