問題タブ [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.

0 投票する
1 に答える
145 参照

c++ - 指定された初期化子の順序がフィールド宣言に対応していない場合、clang は関数呼び出しを削除できます

このコード:

clang (私は 3.7.0、3.7.1 を試しました) でコンパイルすると、次のようになります。

の 2 番目の呼び出しが削除されました...とのprintInfo違いは、指定されたイニシャライザの順序のみです。callnoCall

オプションを-pedantic指定すると、指定された初期化子は C99 の機能であり、C++ ではなく、2 回目の呼び出しなしでコードを作成するという警告が生成されますprintInfo

既知のバグですか?

0 投票する
1 に答える
475 参照

swift - Swift が間違った初期化子を呼び出すのはなぜですか?

私は UINavigationController サブクラスを持っています:

このクラスを次のようにインスタンス化します。

これはコンパイルされますが、実行時に失敗します:

キーワードnavigationBarClass:およびtoolbarClass:を指定したときに、なぜinit(nibName:bundle:)が呼び出されているのかわかりません。

サブクラスからすべてのイニシャライザを削除すると、正常に動作しますが、スーパーのみを呼び出すメソッド/イニシャライザをオーバーライドするのは面倒なので混乱します。

87 行目は、クラスが宣言されている行です。デバッガーでステップ インしようとしましたが、UIKit コードにステップ インできず、自分のコードだけにステップ インできません。

これが重要な場合、これは iOS 10 と Swift 3 にあります。