[解決済み] swiftにおけるconvenience initとinitの違いは何ですか、より良い明示的な例
2022-02-18 10:13:16
質問
の違いというか、目的がよくわからなくて困っています。
convenience init
.
解決方法は?
標準的な
init
:
指定イニシャライザーは、クラスの主要なイニシャライザーです。A 指定されたイニシャライザーは そのクラスは、適切なスーパークラスのイニシャライザーを呼び出して、継続します。 初期化処理はスーパークラスの連鎖で行われます。
convenience init
:
便利なイニシャライザーは、二次的なものであり、そのイニシャライザーをサポートするものです。 クラスがあります。コンビニエンス・イニシャライザーを定義すると、指定された コンビニエンス・イニシャライザーと同じクラスから、いくつかの のパラメータはデフォルト値に設定されます。また また、コンビニエンス・イニシャライザーを定義すると、そのクラスのインスタンスを作成することができます。 特定のユースケースや入力値のタイプに対応するためです。
につき Swift ドキュメント
簡単に言うと、コンビニエンス・イニシャライザーを使うことで、指定されたイニシャライザーをより速く、より便利に呼び出すことができるということです"quot; 。つまり、コンビニエンス・イニシャライザーは
self.init
の代わりに
super.init
は、指定されたイニシャライザーをオーバーライドする際に見られるようなものです。
の疑似コード例です。
init(param1, param2, param3, ... , paramN) {
// code
}
// can call this initializer and only enter one parameter,
// set the rest as defaults
convenience init(myParamN) {
self.init(defaultParam1, defaultParam2, defaultParam3, ... , myParamN)
}
私は、主にデフォルトで長いイニシャライザを持つカスタムビューなどを作成する際に、これらをよく使用します。ドキュメントを見ると、私よりもうまく説明されています。
関連
-
[解決済み] Swiftのstatic funcとclass funcの違いは何ですか?
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] Swift 3でdispatch_onceはどうなる?
-
[解決済み] Swiftの@selector()?
-
[解決済み] 純粋な」Swift で弱いプロトコル参照を作るには (@objc なしで) どうしたらいいですか?
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み】コンパイラーエラー。Objective-C のセレクタを持つメソッドは、同じ Objective-C セレクタを持つ以前の宣言と競合しています。
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
-
[解決済み】Swiftで2つのDate(月/日/時間/分/秒)の差を取得する。
-
[解決済み] swiftにおける "precondition "と "assert "の違いとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] Swift 3、Swift 4、それ以降で dispatch_sync, dispatch_async, dispatch_after などはどうすればいいですか?
-
[解決済み] Swift - 呼出しの余分な引数
-
[解決済み] 2倍値を小数点以下x桁に丸める処理を素早く行う。
-
[解決済み] SwiftでStringのサブストリングはどのように動作するか
-
[解決済み】Swift - StringをDoubleに変換する方法
-
[解決済み】解決方法。iOS 13.0で'keyWindow'が非推奨になりました。
-
[解決済み】SwiftでFloatをIntに変換する。
-
[解決済み】dyld: ライブラリがロードされません。rpath/libswift_stdlib_core.dylib です。
-
[解決済み】swiftでDoubleを最も近いIntに丸めるには?