問題タブ [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.
iphone - UITableViewController サブクラスでオーバーライドする初期化子
UITableViewController
NIB またはコードを介して使用される場所に応じて、インスタンス化されるサブクラスがあります。どちらの場合も、初期化メソッドでカスタマイズを行いたいと考えています。initWithNibName:bundle:
つまり、 と の両方を 実装する必要がありinitWithCoder:
、各メソッドはそれぞれのスーパー初期化子を呼び出すのでしょうか?
これは今は必要ありませんが、View Controller を でインスタンス化できるようにしたい場合はどうすればよいinitWithStyle:
ですか? 同じ動作を再現する 3 つの異なる init メソッドが必要ですか?
基本的に、共通の init メソッドを呼び出すことのない 3 つの個別の初期化子があるため、これは指定された初期化子の規則全体に違反しているようです。または、3 つの異なるインスタンス化ルートをサポートしながら、共通の指定イニシャライザーを作成する方法はありますか?
c++ - C++ は指定された初期化子に相当しますか?
最近、いくつかの組み込みデバイスに取り組んでいます。ここでは、コンパイル時に初期化する必要のある構造体と共用体がいくつかあります。これにより、変更する必要のない特定のものをフラッシュまたは ROM に保持し、少し節約できます。フラッシュまたは SRAM に少しパフォーマンスを犠牲にします。現在、コードは有効な C99 としてコンパイルされますが、この調整がなければ C++ コードとしてもコンパイルされていました。これを防ぐ重要な要因の 1 つは、C++ の C サブセット内では機能しない C99 指定の初期化子を使用していることです。私は C++ にあまり詳しくないので、C++ と互換性のある C でこれを実現する簡単な方法を知りたいと思っています。
もう 1 つの注意点: 指定イニシャライザを使用する主な理由は、共用体の最初のメンバーではなく初期化することです。また、標準の C++ または ANSI C に固執することは、他のコンパイラとの互換性を維持するためにプラスになります (C99 を使用せずに指定された初期化子のようなものを提供する GNU 拡張について知っています)。
c - 指定された初期化子によって名前が付けられていないフィールドはどうなりますか?
C99(C ++ではない)では、次の構文を使用して構造体を初期化することができます。
指定されていないフィールドはどうなりますか?
c++ - 指定された初期化子がg++に実装されていないのはなぜですか
指定された初期化子のサポートがg++に追加されなかった特別な理由はありますか?C99標準が遅れて、g ++が早く開発され、後で人々がこの問題を気にしなかった理由、またはC ++の文法に指定された初期化子を実装するのに固有の困難があるのですか?
ios - -[UIViewController initWithNibName:bundle:] をいつ呼び出す必要がありますか?
ポストUsing initWithNibName changes全くnothingで、彼は同じ View Nib 定義の 2 つの使用法を示しています。
したがって、これは常に機能しますが、次のようになります。
MyViewController *vctrlr = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[self.navigationController pushViewController:vctrlr animated:YES];
[vctrlr release];
以下は、私が継承したすべてのView Controllerで機能しますが、私のものではありません!
TheirViewController *vctrlr = [[TheirViewController alloc] init];
[self.navigationController pushViewController:vctrlr animated:YES];
[vctrlr release];
iOS プログラミングは初めてなので、いくつかのコードを継承しました。すべてのビュー コントローラーのビューは IB で定義されていますが、これらのビュー コントローラーの割り当て/初期化の作成に一貫性がありませんでした。新しい View Controller と XIB を作成しましたが、initWithNibName を使用しないと機能しません (View Controller を Nav Controller にプッシュするとクラッシュします)。私のView Controllerが他のView Controllerとどのように違うのかわかりません...何かヒントはありますか?私以外のアプリ内の他のすべてのView ControllerのinitNibNameの使用を削除できました。
c - 指定された初期化子を使用するときに、「this」構造体へのポインターを取得することは可能ですか?
この種の構造体は、リンクリストの先頭として使用されます。
nextとprevの両方がそれ自体を構造化することを指している場合、リストは空です。構造を初期化するには、次のマクロを使用できます。
こちらです:
しかし、マクロパラメータなしで次の方法で同じことを行う方法はありますか?:
次のことを試しましたが、コンパイルエラーが発生しました。
c - 指定された初期化子とmallocをC99+で組み合わせますか?
C99の指定された初期化子を、結果と組み合わせる良い方法はありmalloc
ますか?
以下は不必要な重複があるようです:
の使用Type
、および*t
上記のコードからの削除はできますか?
c - 構造体初期化子でドット(。)はどういう意味ですか?
私はこのC構文をよく理解していません。構文名がわからないので検索すらできません。あれは何でしょう?
designated-initializer - 指定された初期化子はどのように機能しますか
指定された初期化子を理解するのに問題があります。私は「MacでObjectiveCを学ぶ」という本からObjectiveCを勉強しています。以下は実装ファイルです。
私が理解していることから:
デフォルトの初期化子です。Tireクラスのインスタンスが次のようなステートメントで初期化される場合
その後、上記の初期化メソッドが実行されます。ただし、このメソッドには「pressure = p」が含まれているため、この段階まで「p」に値を指定していなかったため、圧力はどのようになりますか。また、このメソッドの実行が終了するとどうなりますか?キュー内の次の「init」メソッドはどれですか?
objective-c - 指定された初期化子が基本クラスで二次初期化子を呼び出せないのはなぜですか?
ドキュメントによると、Objective-C のクラスの指定された初期化子は、その基本クラスの指定された初期化子を呼び出す必要があります。
もう 1 つのルールは、2 次イニシャライザは、独自のクラスの指定されたイニシャライザを呼び出さなければならないということです。
しかし、2 番目の規則に従えば、指定されたイニシャライザが基本クラスでセカンダリ イニシャライザを呼び出せないのはなぜでしょうか? このベース セカンダリ イニシャライザは、最終的に自身のレベルの DI を呼び出すため、オブジェクトは引き続き適切に初期化されますよね?
違いは、欠落している変数のデフォルトを誰が選択するか、または基本クラスのようです。