1

クラスの拡張と実装の違いに関する一般的な質問です。

@interface AppDelegate : UIResponder <UIApplicationDelegate>

私の例では、私のクラスAppDelegateはUIResponderクラスから拡張されていますが、UIApplicationDelegateクラスを実装しています。

誰か説明してもらえますか...UIApplicationDelegateオブジェクト/クラスのメソッドにアクセスする可能性もありますか?違いはどこにありますか?

ありがとう

4

3 に答える 3

1

Java用語で話している場合、例ではUIResponderクラスを拡張(一般にサブクラス化と呼ばれます)しています。

この例では、UIApplicationDelegateの実装も行っています。これは、UIApplicationDelegateプロトコルの必須メソッドを定義する必要があり、オプションのメソッドを実装するオプションがあるインターフェイスの実装に似ています。

Javaと同様に、拡張またはサブクラス化できるのは1つのクラスのみですが、クラスに複数のデリゲートプロトコルを実装できます。

詳細を理解したい場合は、Appleのプロトコルガイドが非常に便利です:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html

于 2012-06-26T08:50:40.770 に答える
0

非常に基本的なレベルでは、ObjectiveCで複数の継承を実現するためのフォームを見ることができます。

Objective Cでは単一の継承のみがサポートされているため、プロトコル(Javaのインターフェイスに似ています)を使用して複数の継承を実現できます。

したがって、クラスをサブクラス化するときは、それを拡張すると言います。

そして、プロトコルを使用して共通の機能にアクセスする場合(複数の継承を行うため)-実装すると言います。

于 2012-06-26T08:51:52.703 に答える
0

クラスの拡張=サブクラス化。つまり、オーバーライドしないメソッドはスーパークラスで呼び出されます。

デリゲートプロトコルを実装すると、クラスが実装することになっているメソッドがわかります。

(例)https://developer.apple.com/library/mac/#documentation/cocoa/conceptual/objectivec/Chapters/ocProtocols.html#//apple_ref/doc/uid/TP30001163-CH15-SW1を参照してください。

http://www.thepensiveprogrammer.com/2010/05/objective-c-protocols-and-delegates.html

于 2012-06-26T08:52:32.350 に答える