[Swift]デフォルト構文-構造とクラス
使用するためにデータを整理する場合は、構造体とクラスが便利です.
さらに、Propertyとメソッドを使用して構造化されたデータと機能を得ることもできます.
違いは、構造体のインスタンスが値タイプであり、クラスのインスタンスが参照タイプであることです.
構造体は
完体を作成してインスタンスを作成して初期化する場合は、デフォルトで作成されたメンバーとアルファベットのライフサイクルを使用します.
インスタンスの作成と初期化後にProperty値にアクセスする場合は、句点
構造を定数
クラスの定義方法とインスタンスの作成方法
クラスを定義するときにキーワード
継承の方法.
クラスを定義した後、インスタンスを作成および初期化する場合は、デフォルトの頭文字ライフサイクルを使用します.
インスタンスの作成と初期化後にProperty値にアクセスする場合は、句点
構造体とは異なり、クラスのインスタンスは参照タイプであるため、クラスのインスタンスを定数
クラスのインスタンスは参照タイプで、さらに参照する必要がない場合はメモリから解放されます.
参照タイプ:データが転送されると、値のメモリ位置が転送されます.後でもっと詳しく知ります.
このプロセスを破棄と呼び、破棄する前に
たとえば、インスタンス破棄前にデータを格納したり、他のオブジェクトインスタンス破棄を通知したりする必要がある場合は、
構造体とクラスには多くの類似点がある.値 を格納するためにPropertyを定義することができる.機能を実行する方法 を定義することができる.サブスクリプト構文により、サブスクリプトを定義して、構造体またはクラスが持つ値(property)にアクセスできます. の初期化時の状態を指定するために、頭文字Liser を定義することができる.は、拡張に拡張することによって、新しい機能を追加し、 を初期実装することができる.特定の機能を実行するために、特定のプロトコル を遵守することができる.
確かに違いがある.構造体 を継承できない.型鋳造は、クラスインスタンス にのみ適用する.デジタル署名は、クラスのインスタンスでのみ使用できます. 参照カウントはクラスインスタンス にのみ適用される.
構造体は値タイプ
クラスは参照タイプです.
価値型と参照型の大きな違いが
値タイプのデータを関数の伝達パラメータとして伝達すると、メモリに新しい伝達パラメータインスタンスが作成されます.
渡す値は、作成した新しいインスタンスにコピーされます.
一方、参照タイプのデータが伝達パラメータとして伝達されると、既存のインスタンスの参照が伝達され、新しいインスタンスではなく既存のインスタンスの参照が伝達されます.
構造体とクラスは、新しいデータ型を定義し、機能を追加します.
ただし、構造インスタンスは常に値タイプであり、クラスインスタンスは常に参照タイプである.育ちは悪くないが、用途は違う!
このガイドの1つ以上の条件が適用される場合は、構造体を使用することをお勧めします.
パッケージに関連する単純値セット を目的とする.参照パッケージの値よりもコピーが適切である場合、 .構造体に格納プロパティが値タイプであり、参照よりもコピーが適切である場合、 .他のタイプから継承する必要がない場合または自分で継承する必要がない場合 .
出典:Sweet Programming(野熊)、iOSプログラミングのSweet基礎(野熊)
さらに、Propertyとメソッドを使用して構造化されたデータと機能を得ることもできます.
違いは、構造体のインスタンスが値タイプであり、クラスのインスタンスが参照タイプであることです.
こうぞうたい
構造体は
struct
と定義されています!struct 구조체 이름 {
프로퍼티와 메서드들
}
上記のルールで構造体を作成します!struct IanInformation {
var name: String
var age: Int
}
構造インスタンスの作成と初期化
完体を作成してインスタンスを作成して初期化する場合は、デフォルトで作成されたメンバーとアルファベットのライフサイクルを使用します.
インスタンスの作成と初期化後にProperty値にアクセスする場合は、句点
.
を使用します.構造を定数
let
と宣言した場合、インスタンスのプロパティ値は変更できませんが、変数var
と宣言した場合は変更できます.struct IanInformation {
var name: String
var age: Int
}
var ian: IanInformation = IanInformation(name: "ian", age: 12)
ian.name = "이안!"
ian.age = 19
let ian2: IanInformation = IanInformation(name: "ian2", age: 100)
ian2.name = "상수이므로 변경 불가 !" // 상수이므로 변경 불가
ian2.age = 1 // 상수이므로 변경 불가
カテゴリ
クラスの定義方法とインスタンスの作成方法
クラスを定義するときにキーワード
class
を使用します.class 클래스 이름 {
프로퍼티와 매서드
}
レベルには継承可能なフィーチャーがあります継承の方法.
class 클래스 이름: 부모 클래스 이름 {
프로퍼티와 매서드
}
上記のルールを使用してクラスを作成します.class Person {
var height: Float = 0.0
var weight: Float = 0.0
}
クラスインスタンスの作成と初期化
クラスを定義した後、インスタンスを作成および初期化する場合は、デフォルトの頭文字ライフサイクルを使用します.
インスタンスの作成と初期化後にProperty値にアクセスする場合は、句点
.
を使用します.構造体とは異なり、クラスのインスタンスは参照タイプであるため、クラスのインスタンスを定数
let
として宣言すると、内部プロパティ値を変更できます.class Person {
var height: Float = 0.0
var weight: Float = 0.0
}
var ian: Person = Person()
ian.height = 150.0
ian.weight = 100.0
let ian2: Person = Person()
ian2.height = 112.2
ian2.weight = 122.2
クラスインスタンスの消失
クラスのインスタンスは参照タイプで、さらに参照する必要がない場合はメモリから解放されます.
参照タイプ:データが転送されると、値のメモリ位置が転送されます.後でもっと詳しく知ります.
このプロセスを破棄と呼び、破棄する前に
deinit
メソッドを呼び出します.クラスにおいてdeinit
メソッドが実施される場合、deinit
メソッドは、そのメソッドが消失する前に呼び出される.このように呼び出されるdeinit
メソッドを디이니셜라이저
と呼ぶ!各クラスは1つのdeinit
メソッドしか実装できず、パラメータと戻り値を持つことはできません.class Person {
var height: Float = 0.0
var weight: Float = 0.0
deinit {
print("Person 클래스의 인스턴스가 소멸됩니다 ! ")
}
}
var ian: Person? = Person()
ian = nil // Person 클래서의 인스턴스가 소멸됩니다 !
通常、deinit
メソッドは、インスタンスがメモリから解放される前に処理するコードを格納します.たとえば、インスタンス破棄前にデータを格納したり、他のオブジェクトインスタンス破棄を通知したりする必要がある場合は、
deinit
の方法を実装する必要があります.構造とクラスの違い
構造体とクラスには多くの類似点がある.
確かに違いがある.
値タイプと参照タイプ
構造体は値タイプ
クラスは参照タイプです.
価値型と参照型の大きな違いが
무엇이 전달되느냐
だと思ったら、気持ちがいいです!値タイプのデータを関数の伝達パラメータとして伝達すると、メモリに新しい伝達パラメータインスタンスが作成されます.
渡す値は、作成した新しいインスタンスにコピーされます.
一方、参照タイプのデータが伝達パラメータとして伝達されると、既存のインスタンスの参照が伝達され、新しいインスタンスではなく既存のインスタンスの参照が伝達されます.
構造体とクラスの選択と使用
構造体とクラスは、新しいデータ型を定義し、機能を追加します.
ただし、構造インスタンスは常に値タイプであり、クラスインスタンスは常に参照タイプである.育ちは悪くないが、用途は違う!
このガイドの1つ以上の条件が適用される場合は、構造体を使用することをお勧めします.
パッケージ
出典:Sweet Programming(野熊)、iOSプログラミングのSweet基礎(野熊)
Reference
この問題について([Swift]デフォルト構文-構造とクラス), 我々は、より多くの情報をここで見つけました https://velog.io/@ian/Swift-기본-문법-구조체와-클래스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol