問題タブ [designated-initializer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 指定された初期化子の順序がフィールド宣言に対応していない場合、clang は関数呼び出しを削除できます
このコード:
clang (私は 3.7.0、3.7.1 を試しました) でコンパイルすると、次のようになります。
の 2 番目の呼び出しが削除されました...とのprintInfo
違いは、指定されたイニシャライザの順序のみです。call
noCall
オプションを-pedantic
指定すると、指定された初期化子は C99 の機能であり、C++ ではなく、2 回目の呼び出しなしでコードを作成するという警告が生成されますprintInfo
。
既知のバグですか?
swift - Swift が間違った初期化子を呼び出すのはなぜですか?
私は UINavigationController サブクラスを持っています:
このクラスを次のようにインスタンス化します。
これはコンパイルされますが、実行時に失敗します:
キーワードnavigationBarClass:およびtoolbarClass:を指定したときに、なぜinit(nibName:bundle:)が呼び出されているのかわかりません。
サブクラスからすべてのイニシャライザを削除すると、正常に動作しますが、スーパーのみを呼び出すメソッド/イニシャライザをオーバーライドするのは面倒なので混乱します。
87 行目は、クラスが宣言されている行です。デバッガーでステップ インしようとしましたが、UIKit コードにステップ インできず、自分のコードだけにステップ インできません。
これが重要な場合、これは iOS 10 と Swift 3 にあります。