2017-11-21 12 views
0

事前に重複していることをお詫びしますが、これらの宣言の名前がわからないため、疑似質問に対する回答は見つかりませんでした。Swiftのオブジェクト宣言の相違点

誰も私に宣言を反対するためにこれらの違いを説明することができれば、私は感謝:var objectname: Classname!

  • var objectname = Classname()
  • 両方

    1. Classname右クラスのインスタンスですか?では、いつ最初の宣言を使用し、2番目の宣言を使用するのですか?なぜ?

    +0

    [これらの検索結果](https://stackoverflow.com/search?q=%5Bswift%5D+difference+declaration)をスキャンすると、あなたの質問にお答えします。 – rmaddy

    答えて

    2
    1. var objectname: Classname!

    これはタイプClassnameのオブジェクトを宣言しますが、これに値を与えるものではありません。この値にアクセスしようとすると、nilになります。 Swiftでは値を持たないため、!は、変数にアクセスするときに変数に値があることをコンパイラに通知します。 iOS開発では、安全ではないため、最初の宣言の使用はお勧めしません。私はvar objectname: Classname?を使用して同じ変数を作成しますが、値があるとは仮定しません。あなたはこのように、このタイプを使用することができます:objectnameが値を持つ

    var objectname: Classname? 
    if let obj = objectname { 
        // do something with obj (the unwrapped value of objectname) 
    } 
    

    場合は文が実行された場合、その後、それ以外の場合にはありません。

  • var objectname: Classname()
  • これは、型クラス名の変数を宣言し、同時にそれを初期化します。したがって、最初のステートメントはnilですが、2番目のステートメントはClassnameタイプのオブジェクトを表します。インスタンス変数を作成するときは、このステートメントを使用する必要があります。