マル開発日記

マルAndroidデベロッパ

Swiftの配列は値型

Swift勉強中です。まだまだ卵にすらなってません。

驚いたのはSwiftの配列は値型だということです。とにかくなんだそれはって感じ。。

 

import UIKit

 

var ary = [1, 2, 3, 4, 5]

var cpy = ary

 

cpy[0] = 6

 

print(ary[0], cpy[0]) // 1, 6

 

Swiftの配列のコピーって楽でいいですね。本当にあっさりwってじゃあ関数とかの引数で配列使っても丸々コピーされるってこと?頭おかしんじゃね?C言語をイメージしてると怒りしか感じない。。

色々調べたら心配なしってことがわかった。内部的には必要な時と場所にしかコピーが発生しないみたい。(上の例ではcpy[0]の再代入でコピーが必要になってくるよね)

結論といたしまして、Swiftの配列を他の変数に代入するということはコピーが発生するかもしれない同じ配列を定義しますよ。メモリの効率とかは気にしないでね。ってことかな?