通常、私はUI
クラスからサブクラス化するときに、対象のスーパークラス初期化子を呼び出します。しかし、私はNSObject
の実装の詳細についてはわかりません。メンバーバールに関してはそれほど進んでいないようですので、サブクラスがNSObject
の場合は[super init]
に電話する必要がありますか?NSObjectの[super init]や[super initWithCoder]などを呼び出す必要があります
8
A
答えて
8
技術的に、 documentation for -[NSObject init]
はNSObject
クラスで定義されて
init
メソッドが初期化を行わないことを言います。単にself
を返します。
それは文書化し、それに依存しているコードの束は、おそらくすでにありますされているので、その事実は、Mac OS Xの将来のバージョン
編集中に変更することが非常にはほとんどありません:BoltClock's a Unicornがもたらしますあなたのプログラムを実行している人のために-[NSObject init]
を呼び出さないことで節約された合計時間は、あなたのクラスのスーパークラスを何かに変更した場合に発生するデバッグ時間を超過することはまずありません。 NSObject
以外の場合はに電話をかけてください。 documentationから
4
、まったくの初期化を行うには表示されません。
NSObjectクラスで定義された
init
メソッドは、初期化しません。単にself
を返します。
私は[super init]
を呼び出すことがない無害だろうと仮定しますが、規則に従うと、あなたが知っている、とにかくあなたのサブクラスでそれを呼び出すしない理由はありません。例えば、あなたのサブクラスは将来別のクラスから継承することになります。サブクラスはそれ自身のサブクラスが必要とする初期化ロジックを独自の-init
メソッドに含めることができます。
0
あなたの実装では、super
の指定されたイニシャライザのいずれかを呼び出して、明確で正しいものを実行するだけでよいからです。
関連する問題
- 1. 「super」がNSObjectの場合、なぜ[super init]がnilを返すのですか?
- 2. NSManagedObject didTurnIntoFaultでsuperを呼び出す必要がありますか?
- 3. androidカスタムビューコンストラクタの場合はsuper()を呼び出すかthis()を呼び出す必要がありますか?
- 4. if((self = [super init]))?
- 5. この場合、super().__ init __()を使用する必要がありますか?
- 6. Mockito.spy VerifyError:コンストラクタがsuper()またはthis()を呼び出す必要があります
- 7. viewSafeAreaInsetsDidChangeをオーバーライドするにはsuperを呼び出す必要がありますか?
- 8. Objective-Cカテゴリで `super`を呼び出す
- 9. コンストラクタでsuper()を呼び出す理由
- 10. sails.jsコントローラでsuperメソッドを呼び出す
- 11. iOS:UIViewサブクラスのinitは[super init]を呼び出し、スーパークラスのメソッドを呼び出します。なぜ[subclass initWithFrame:xx]を呼び出すのですか?
- 12. これはpython super().__ init __(** kwargs)
- 13. 指定されたイニシャライザは、 'super'で指定されたイニシャライザを呼び出す必要があります。
- 14. super().__ init __()がエラーで失敗する
- 15. pythonの__str__メソッドでsuper()を呼び出しますか?
- 16. [super loadView]を呼び出すことはできますか?
- 17. [super didReceiveMemoryWarning]を呼び出すときにクラッシュします
- 18. UserDataからcfn-initを呼び出す必要がありますか?
- 19. [convertToGl]を呼び出す必要がありますか?
- 20. オーバーライド後は常にsuperを呼び出しますか?
- 21. Pythonのカスタムエラークラスでsuperを呼び出すポイントは何ですか?
- 22. Reactコンストラクタでsuper()を呼び出すのは何ですか?
- 23. なぜsuper(A、self).__ init __()はAの__init __()を呼び出さないのですか?
- 24. 初期化子から戻る前にすべてのパスでsuper initが呼び出されない
- 25. typescript内のコンストラクタ()内でsuper()を呼び出せません
- 26. Emberコントローラのイベントハンドラから `super`を呼び出す
- 27. Objective-Cブロックの実装でsuperを呼び出す
- 28. 静的UIViewControllerサブクラス内で[super dealloc]を呼び出さない
- 29. clenメソッドをオーバーライドしてsuperを呼び出す
- 30. コントローラーをサブクラス化し、いつsuperを呼び出すか