私はまだself = super initを理解していません。私は多くの本やグーグルを読んでいましたが、 親クラスなどの戻りオブジェクトと同じ現在のオブジェクトをチェックするために使用されていることはわかっています。 しかし、それは答えではありません。誰かが私に簡単ではっきりと受け入れられる答えを与えることができますか? ありがとう!"self = super init"について誰でも簡単に説明できますか?
答えて
クイックアンサーは、クラスのスーパークラスにオブジェクトの初期化を指示していることです。そのスーパークラスから継承しているので、実装に固有の他の初期化タスクを実行できますが、まずは初期化の基本が実行されていることを確認する必要があります(これはベースクラスNSObjectによって処理されます)。別のクラスから継承する各クラスは、初期化を行う前にスーパークラスが初期化されていることを確認する必要があります。
あなたが作成することができる前に、あなたの親は創造されなければならず(スーパークラス)、最初に親が作られなければならなかった(スーパークラス)
オブジェクト指向プログラミングの基本を検索して、このようなことを学ぶことをお勧めします。
NSObjectはルートクラスです。 https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html init
メソッドがあります。そのinit
メソッド内NSObject
クラスはObjective-Cのすべてのオブジェクトの初期化子です。 super
は、単にオブジェクトのスーパークラスを返します。
Class A
から継承された場合、Class A
はClass B
のスーパークラスになります。再びClass C
はClass B
から継承され、Class C
のスーパークラスはClass B
になります。そうです。あなたはクラスから[super init];
を呼び出すと
、それは単にそのスーパークラス、その上のターンコールでinit
そのスーパークラスのメソッドとのinit
メソッドを呼び出します。最後に、ルートオブジェクトNSObjectに到達し、実際のinit
メソッドを呼び出します。その時点で、iOSはあなたのオブジェクト用のメモリとあなたのオブジェクト用の必要なデータ構造を割り当てます。 NSObjectクラスの各メソッドとプロパティに関するドキュメントを参照してください。
UIView
のサブクラスであるクラスMyView
を作成した場合、クラス階層は次のようになります。あなたはクラスのMYVIEW "でinit
メソッドを呼び出すとき
NSObject
UIAppearanceContainer
UIAppearance
NSCoding
UIView
MyView
だから、それはUIViewの
のinitメソッド
UIViewのはNSCoding
のinitメソッドを呼び出しますNSCodingが初期化を呼び出します呼び出します。 UIAppearanceのメソッド
UIAppearanceはUIAppearanceContainerのinitメソッドを呼び出します
UIAppearanceContainerはNSObjectのinitメソッドを呼び出します。
上記の例の2番目のステップでは、UIViewはNSCodingのinitメソッドを自動的に呼び出すか、別のself = super initをUIViewに記述する必要がありますか? – user1232250
UIViewの中には、すべてのメソッドと同じようにself = [super init]という呼び出しがあります – rakeshNS
私はこの答えが間違っていることを知りたいと思います。あなたのコメントを入力してください(この回答に誰が投票しましたか)。 – rakeshNS
あなたが「チェックする」というあなたの言及は、あなたが比較操作として=
を見ていると思います。そうではありません。それは割り当てです。場合によっては、if
の条件内で割り当てが表示されることがあります。これは、代入式に値(割り当てられた値)があるという事実を利用しています。したがって、if (self = [super init])
は、「-init
メソッドを呼び出す」、「self
に結果を割り当てる」、およびを「スーパーの-init
から非nilになっているかどうかをチェックする」(すなわち、スーパーが初期化に失敗しなかったこと)を組み合わせます。
この複合代入とテストが紛らわしいとエラーが発生しやすくなることがあるため、Appleは今、障害のチェックからの割り当てを分離お勧めします。
self = [super init];
if (self)
// ... continue initializing ...
はnil以外はゼロに等しいですか? – user1232250
Cでは、ブール値テストでゼロ以外の値がtrueになると評価されます。 NULLポインタと 'nil'はゼロに変換され、したがってブールテストの場合はfalseになります。 –
- 1. 誰もiReportについてJavaで説明できますか?
- 2. if((self = [super init]))?
- 3. 誰でも簡単にナッチのリンク解析について説明できます
- 4. 誰かが私のためにMVCをとても簡単に説明できますか?
- 5. 誰でもこのコードについて説明できますか?
- 6. 誰でもMicrosoftのCDNについて説明できますか?
- 7. 誰でもチックタックトウの勝利条件について説明できますか?
- 8. 誰もベイジアンネットの独立性について私に説明できますか?
- 9. 誰かがdescendantFocusability = afterDescendantsについて説明できますか?
- 10. 誰かがWaitForSeconds()について説明できますか?
- 11. Clojureのunquote-spliceについて簡単に説明できますか?
- 12. 誰でも簡単にTCP RenoとTCP New Renoの主な違いを説明できますか?
- 13. タイプフォワーディングについて簡単に説明しますか?
- 14. 誰も次のPHPコードについて説明できますか?
- 15. 誰でもエグゼキュータのrddブロックについて説明できます
- 16. 誰かが最も簡単にイベントリスナーを使用する方法を説明できますか?
- 17. 誰もが簡単で簡単な言葉で、ファイルを含めるときに../と./の違いは何かを説明できますか?
- 18. Javascript 'this' reference - 誰かが簡単な例を説明できますか?
- 19. 誰もがSQL RangeとList Partitionについて説明できます
- 20. 誰も私にこのコードを説明できますか?
- 21. 誰も私にこのコードを説明できますか?
- 22. Javascript:誰も私にこのコードブロックを説明できますか?
- 23. 誰も私にこのMATLABコードを説明できますか?
- 24. DSMについて簡単に説明してください。
- 25. 誰でもタミル語の名前付きエンティティ認識を進める方法について簡単に説明できますか?
- 26. 誰かがこのRegExについて私に説明できますか?
- 27. 誰でもCodeSmith SchemaExplorer.ViewSchemaコンストラクタのパラメータを説明できますか?
- 28. 誰でもSVGポリゴンポイントを説明できますか?
- 29. 誰でもリクエストリプライブローカのzeromqの例を説明できますか?
- 30. 誰でも私のコードを説明できますか?
2の回答のため、-1のビジュアルについて私の両親の:) – jmstone617