[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とclassとenumの違いを説明してください。
値のタイプ
structは構造体であり、そのタイプ内でpropertyと方法を定義することができる.初心者、サブスクリプト拡張、プロトコルも使用できます.
Enumは、タイプ内の区切りインスタンスとして表される列挙型である.
参照タイプ
classはpropertyとメソッドを定義できます.structと基本的に似ていますが、参照タイプであるため、letキーワードとして宣言しても、インスタンス内のpropertyは変更でき、1つのインスタンスのpropertyのみが変更され、同じインスタンスを参照するすべてのインスタンスが変更されます.
+)他のクラスを継承して機能を書き込むことも、propertyをメモリから明示的に解放することもできます.
https://bbiguduk.gitbook.io/swift/language-guide-1/structures-and-classes
Reference
この問題について([Swift🦩] #9構造vsクラス), 我々は、より多くの情報をここで見つけました https://velog.io/@ddosang/Swift-9-구조체-vs-클래스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol