[Swift🦩] #9構造vsクラス


1.機能


可能な構造体クラス属性OOmethodオブジェクトsubscriptOOinitOOextensionOOProtocolコンプライアンスOO継承ceXOtype鋳造XODeinitXO参照カウントXO

2.定義

struct Model {
    var status: Int
    var message: String
}
class ViewModel {
    var model: Model
    var observable: Observable<Int>
}

3. instance

let model = Model()
let viewModel = viewModel()

4.Propertyアクセス


アクセス
model.status
viewModel.observable
viewModel.model.message

5.初期化


構造体は、メンバー固有の初期化構文を自動的に生成します.
クラスは違います.必要に応じて、自分で定義する必要があります.
let model = Model(status: 404, message: "success")

6. Value vs Reference ⭐️⭐️


構造体と列挙型は値タイプで、使用時にコピーして使用します.(既存の値を保持)
ただし、クラスは参照タイプなので、同じインスタンスを参照します.(既存の値を置換)
C言語のポインタを考えればいいのですが、int*のように離れているわけではありません.定数や変数のように定義すればいいです.
+)SWIFTのvaluetypeはcopy-on-writeです.同じ値で、値が変更される前にコピー!!
let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0

let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0

クラスID演算子


== != いいえ、=== !==です(jsでは、タイプが同じかどうかを確認するための演算子です...)

n.問題


Structが何なのか、どのように使われているのかを説明してください。


structは構造体でstruct名の形で使用されます.プロパティ、メソッド、および初期値(+拡張、プロトコル、下付き)を定義できます.
主にモデルの定義に使用されます.
+)を追加
  • structは、管理のために相関値をグループ化(カプセル化)する構文である.
  • 値タイプで、新しい変数に割り当てられると、コピーされて使用されます.
  • ですが、copy-on-writeなので、実際の値が変更されるまで同じ値を参照します.
  • 継承、装飾、type鋳造は不可能です.
  • 自動メンバー初期化構文を指定します.
  • structとclassとenumの違いを説明してください。


    値のタイプ
    structは構造体であり、そのタイプ内でpropertyと方法を定義することができる.初心者、サブスクリプト拡張、プロトコルも使用できます.
    Enumは、タイプ内の区切りインスタンスとして表される列挙型である.
    参照タイプ
    classはpropertyとメソッドを定義できます.structと基本的に似ていますが、参照タイプであるため、letキーワードとして宣言しても、インスタンス内のpropertyは変更でき、1つのインスタンスのpropertyのみが変更され、同じインスタンスを参照するすべてのインスタンスが変更されます.
    +)他のクラスを継承して機能を書き込むことも、propertyをメモリから明示的に解放することもできます.
    https://bbiguduk.gitbook.io/swift/language-guide-1/structures-and-classes