Swift では、String
や Array
、Dictionary
のような基本的なデータ型の多くが、構造体として実装されています。つまり、文字列や配列、辞書のようなデータは、定数や変数に代入されるとき、あるいは関数やメソッドに渡されるときにコピーされます。
この振る舞いは Foundation と異なります。NSString
や NSArray
、NSDictionary
は構造体ではなく、クラスとして実装されています。Foundation での文字列や配列、辞書は、コピーではなく、常にインスタンスの参照として代入、または渡されます。
NOTE
上の説明は、文字列や配列、辞書のコピーについて言及しています。コードでの振る舞いは、常にコピーされているように見えます。しかし、Swift は本当にそうする必要があるときにだけ、実際にコピーしています。Swift は、性能を最適化するために値のコピーをうまく処理しており、この最適化が起こらないように代入を避けるべきではありません。
Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.