[swift]値タイプ参照タイプスタック領域


値タイプ/参照タイプ、スタック領域/ヒップ領域


SWIFTを勉強している人なら、飽きて入ってきたり、聞いていたり、飛ちゃんとして問い詰められたり…面接でよくある質問というキーワード



自由なMomoになりたいので整理しておきましょう

値タイプと参照タイプの違いは?


値タイプは、宣言のたびに値をコピーして使用します.元々影響はありません.
参照タイプとは、元のアドレス値です.変更時にも元々変更されます.
let a = Person()
let b = a
上記の場合、ba인스턴스가 위치한 주소を指す.b의 프로퍼티を変更すると、b가 가리키는 주소값a의 데이터が変更されます.
では、次の状況はどうでしょうか.
class Person {
    var name = ""
    var age = 100
}

let a = Person()
let b = a

b.name = "horeng"
letと発表されたb프로퍼티に変更します.
可能ですか.

はい。


この場合、letと宣言されたのはb가 가리키고 있는 주소のみである.
let a = Person()
let another = Person()
let b = a

b = another
こんなんじゃだめだ.
つまり、let으로 클래스를 선언한다는 것を発表したとき、この住所を示すだけです.変更不可!当たり前のことです.これはただ何もない矢印です!

参照したaインスタンスが消えたら、bはどうなるのでしょうか。


これはARCについて理解する必要があります.ARCに関する内容は以下のリンクで表示できます.
(あとでARC関連記事でブログリンクします)…ほほほ
  • スタック領域とhip領域の違いは?
  • はなぜ2つの分野に分かれているのですか?
  • 基本的に構造体を選んだ理由は?
    なぜアイデンティティを使用するときにクラスを使用するのですか?
    Classが頭文字Riserを必要とする理由は?
    参考にしていた番組が消えたらどうなりますか?
    (修正中です.)