Swift.Struct and Class


SWIFTプログラミング3版を見て整理した内容

こうぞうたい


大文字のcamel caseで命名すればいいです.
PropertyとMethodは小文字のキャメルボックスを使用します.

構造体の作成

struct Person{
  var name: String
  var age: Int
}

構造インスタンスの作成と初期化

var personInfo:Person = Person(name:"junseole",age:27)

var personInfo.age = 30 // 변경 가능

let personInfo2:Person = Person(name:"junseole",age:27)

personInfo2.name = "nojunseole" // 변경 불가

クラス(Class)


大文字のcamel caseで命名すればいいです.
PropertyとMethodは小文字のキャメルボックスを使用します.

クラスの作成

class Person{
  var name:String = ""
  var age:Int = 0
}

クラスインスタンスの作成と初期化

var personInfo:Person = Person()
personInfo.name = "junseole"
personInfo.age = 27

let personInfo2:Person = Person()
personInfo2.name = "junseole" //오류가 나지 않는다.
personInfo2.age = 27

クラスインスタンスの消失

class Person{
  var name:String = ""
  var age:Int = 0
  
  deinit{
    print("Person 클래스의 인스턴스가 소멸됩니다.")
  }
}

var personInfo:Person? = Person()
personInfo = nil //Person 클래스의 인스턴스가 소멸됩니다.

構造とクラスの違い


同じところ

  • 値を格納するためにpropertyを定義できます.
  • 機能を実行する方法を定義できます.
  • サブスクリプト構文により、サブスクリプトを定義して、構造体またはクラスが持つ値にアクセスできます.
  • 頭文字Liserを定義して、
  • の初期化時の状態を指定できます.
  • が最初に実装されると同時に、Extensionによって拡張され、新しい機能を追加することもできる.
  • は、特定の機能を実行するために特定のプロトコルを遵守することができる.
  • 相違点

  • 構造体は継承できません.
  • 型鋳造は、クラスインスタンスでのみ可能である.
  • デジタル署名はクラスインスタンスにのみ使用できます.
  • 参照カウントは、クラスのインスタンスにのみ適用されます.
  • 構造vsクラス


    構造の値タイプクラスは参照タイプです
    SWIFTのすべての基本データ型は構造体です

    どちらが役に立つか


    アップルのガイドラインでは、以下のいずれかの条件を満たす場合は、構造体を使用することを推奨します.
  • の目的は、単純な関連値セット
  • をカプセル化することである.
    コピー値が
  • でカプセル化された値と比較すると、コピー値が
  • である場合
  • 構造体に格納プロパティが値タイプであり、参照よりもコピーが適切である場合、
  • .
  • 他のタイプから継承する必要がない場合または自分で継承する必要がない場合
  • .