事前に重複していることをお詫びしますが、これらの宣言の名前がわからないため、疑似質問に対する回答は見つかりませんでした。Swiftのオブジェクト宣言の相違点
誰も私に宣言を反対するためにこれらの違いを説明することができれば、私は感謝:var objectname: Classname!
var objectname = Classname()
両方
- が
Classname
右クラスのインスタンスですか?では、いつ最初の宣言を使用し、2番目の宣言を使用するのですか?なぜ?
事前に重複していることをお詫びしますが、これらの宣言の名前がわからないため、疑似質問に対する回答は見つかりませんでした。Swiftのオブジェクト宣言の相違点
誰も私に宣言を反対するためにこれらの違いを説明することができれば、私は感謝:var objectname: Classname!
var objectname = Classname()
両方
Classname
右クラスのインスタンスですか?では、いつ最初の宣言を使用し、2番目の宣言を使用するのですか?なぜ?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
タイプのオブジェクトを表します。インスタンス変数を作成するときは、このステートメントを使用する必要があります。
[これらの検索結果](https://stackoverflow.com/search?q=%5Bswift%5D+difference+declaration)をスキャンすると、あなたの質問にお答えします。 – rmaddy