1

私は一般的にプログラミングが初めてで (何年も前に C クラスを受講していましたが)、iPhone でプログラミングするための Objective-C を学んでいます。簡単な質問だと思いますが、しばらく (日、休み、時間) 探しても、明示的に探している答えが見つかりません。

Objective-C クラスをサブクラス化するときは、deallocate メソッドとともに initialize メソッドを実装する必要があることを私は知っています (後者に ARC を使用しない限り、私が正しければ?)。質問は次のとおりです。

  1. 心配する必要があるのはこれら 2 つだけですか、それとも他のクラスには実装が必要な追加のメソッドがある可能性がありますか?
  2. 他のクラスにサブクラス化するときに実装する必要があるメソッドがある場合、そのドキュメントは通常どこにありますか? (Appleフレームワークのドキュメントには表示されないようですが、そのような情報はプロトコルに表示されます)

ご協力いただきありがとうございます!

4

2 に答える 2

3
  • 技術的には、継承されたバージョンで十分な場合でもinit、実装する必要はありません。deallocまた、ARC はdealloc、すべての場合に書く必要がなくなるわけではありません (ただし、圧倒的多数をカバーしていることは確かです)。たとえば、 を使用してオブジェクトにメモリを割り当てる場合mallocは、dealloc.
  • クラスにインスタンス変数を追加するときは、それらを初期化する必要があります。通常、これは指定された初期化子で行います。繰り返しますが、何も初期化しない場合は、独自の初期化子をコーディングする必要はありません。同じことがデイニシャライザにも当てはまります。
  • メソッドを実装する必要がある唯一のケースは、 とマークされた 1 つ以上のメソッドを持つプロトコルを採用する場合です@requried。これらのメソッドは、プロトコル リファレンスでマークされています。たとえば、 Apple のドキュメントtableView:cellForRowAtIndexPath:tableView:numberOfRowsInSection:は「必要なメソッド」タグでマークされています。
于 2012-07-23T21:26:24.487 に答える
0

NSObject (または UIViewController、UIView などのサブクラス) をサブクラス化する場合、メソッドは必要ありません。

新しいものを作成する場合、UIViewController としましょう。一般的には、新しく作成されたファイルで見つけたメソッドをガイドライン/テンプレートとして保持することをお勧めしますが、メソッドを保持する必要はありません。スーパークラスは常にそれ自体でメソッドを呼び出します。

ただし、viewWillAppear など、super を呼び出さなければならないメソッドがあることに注意してください。

于 2012-07-23T21:25:55.510 に答える