問題タブ [initialization]
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.
objective-c - スーパークラス初期化子を使用したクラスの初期化
私は2つのクラスを持っています。1つはもう1つのサブクラスです(たとえばAnimal
、 とDog
)。スーパークラスにはいくつかの初期化子 (たとえばinitAnimal
) があり、サブクラスにはいくつかの初期化子 (たとえばinitDog
) があります。問題は、(コンパイラの観点から) のようなことを行うことが完全に合法であることですDog *adog = [[Dog alloc] initAnimal]
。スーパークラス初期化子を使用してクラスを初期化します。サブクラスには、初期化されていることを確認したい追加のインスタンス変数がいくつかある可能性があるため、これは好きではありません。ヘッダー ファイルを調べれば解決しますが、コンパイラにチェックさせる簡単な方法はありますか? 私はひどく明白な何かが欠けていると感じていますが、私はそれに指を置くことができません:-)
更新:initDog
とinitAnimal
は最良の例ではありませんでした。2 つのまったく異なる初期化子 ( init
forAnimal
とinitWithFur
forなどDog
) を意味していました。すべての犬にファーを割り当てたい場合は、イニシャライザーのファー部分を作成して、ファーなしで犬オブジェクトを取得できないようにします。しかし、スーパークラスinit
でインスタンスを誤って初期化することは依然として簡単であり、私はうんざりしています。
指定された初期化子を取り上げてくれてありがとう、ジェイソン。以前は思いつきませんでしたが、スーパークラスの指定された初期化子をオーバーロードして、そこに適切なデフォルトを設定することができました。しかし、クラス自体のイニシャライザ以外のイニシャライザを使用することを何らかの方法で違法にすることができれば、なお良いと思います。他にアイデアはありますか?
iphone - コンビニエンス メソッドと init メソッドのメモリ使用量
最近、iPhoneのメモリ管理について調べた際、同じオブジェクトでコンビニエンスメソッドとinitメソッドを比較してみました。たとえば、ダウンロードした NSData を表示する UIImageView があります。
便利な方法:
初期化方法:
ビューを行ったり来たりしてメモリ使用量を増やし、「Simulate Memory Warning」をクリックすると、アプリのメモリ使用量がコンビニエンス メソッドで 20MB から 18MB になり、init メソッドですぐに 20MB から 13MB になりました。
また、便利なメソッドの自動リリースでリリースする時間を与えるために、アプリを待って操作しました。でもあまり落ちませんでした。
オートリリースとリリース以外に、他に何が違いをもたらしましたか?
initialization - C、C ++、C#、Java、Pythonでの宣言、定義、初期化
上記の各言語での用語の意味は何ですか?この点で、なぜ言語が異なるのですか(どこで行っても)。
java - Java Web アプリの初期化
いくつかの jsp ページ、サーブレット、および pojo を含む単純な Web アプリケーションがあります。リクエストが行われる前に接続プールを初期化したいと考えています。これを行う最善の方法は何ですか?アプリが最初にデプロイされたときに実行できますか?それとも、最初のリクエストが来るまで待つ必要がありますか?
python - Python で初期容量のリストを作成する
次のようなコードがよく発生します。
リストに何千もの要素を追加しようとしている場合、新しい要素に合わせてリストのサイズを常に変更する必要があるため、これは非常に遅くなります。
Java では、初期容量を持つ ArrayList を作成できます。リストがどれだけ大きくなるかある程度わかっている場合、これははるかに効率的です。
このようなコードは、多くの場合、リスト内包表記にリファクタリングできることを理解しています。ただし、for / whileループが非常に複雑な場合、これは実行不可能です。私たち Python プログラマーに相当するものはありますか?
objective-c - self を id にキャストする必要があるのはなぜですか?
(id) 引数を取る init メソッドがあります。
私はそれを次のように呼ぼうとしています:
しかし、XCode は、引数が「明確な Objective-C 型」であることについて不平を言っています (通常、型の不一致または間接エラーのレベルを示します)。
self を (id) に明示的にキャストすると、警告は消えます。どちらの場合でも、コードは期待どおりに実行されます。興味深いことに、次の行で、id を受け取る別のメソッドに self を渡していますが、これは正常に機能します。
何か微妙なものが欠けているのではないかと思っています-それともコンパイラの特異性ですか?
それが必要な理由がはっきりするまで、キャストするだけでは完全に快適ではありません。
[編集]
追加のコードを提供するよう求められました。他に関連するものがたくさんあるかどうかはわかりません。これが呼び出しを行う実際のコードです。それ自体が init メソッド内にあることに注意してください。initWithSource
警告を出しているのは への呼び出しです:
そして、呼び出される init メソッドは次のとおりです。
vb.net - 新しい System.Collections.Generic.Dictionary を文字列のキーと値のペアで初期化することは可能ですか?
System.Collections.Generic.Dictionary
1 つのステートメントで文字列のキーと値のペアを使用してオブジェクトを作成し、初期化することは可能ですか?
私は、文字列の配列のコンストラクターの線に沿って考えています..
例えば
これがシンタックス シュガーのようなものであることが判明した場合は、.Net 2.0 (Visual Studio 2005) と Visual Basic で使用できる回答を希望します。それがあなたを先延ばしにしないでください;o)
c - C プログラミング言語標準に従って構造体を初期化する方法
構造体要素を初期化し、宣言と初期化に分割したい。これは私が持っているものです:
MY_TYPE
これは、C プログラミング言語標準 (C89、C90、C99、C11 など) に従ってのローカル変数を宣言および初期化する方法ですか? または、より良いもの、または少なくとも機能するものはありますか?
更新必要に応じてすべてのサブ要素を設定する静的な初期化要素ができました。
c++ - C++ の静的初期化順序の問題を見つける
静的な初期化順序 fiascoでいくつかの問題に遭遇しました。発生する可能性のあるものを見つけるために、大量のコードをくまなく調べる方法を探しています。これを効率的に行う方法について何か提案はありますか?
編集:静的な初期化順序の問題を解決する方法についていくつかの良い答えを得ていますが、それは私の質問ではありません。この問題の対象となるオブジェクトを見つける方法を知りたいです。この点に関しては、Evan の回答がこれまでのところ最良のようです。valgrind を使用できるとは思いませんが、同様の機能を実行できるメモリ分析ツールがあるかもしれません。これは、特定のビルドの初期化順序が間違っていて、ビルドごとに順序が変わる可能性がある場合にのみ問題をキャッチします。おそらく、これをキャッチする静的分析ツールがあるでしょう。私たちのプラットフォームは、AIX 上で動作する IBM XLC/C++ コンパイラーです。