1

只是一个关于扩展类和实现它的区别的一般问题。

@interface AppDelegate : UIResponder <UIApplicationDelegate>

在我的示例中,我的类 AppDelegate 从 UIResponder 类扩展,但实现了 UIApplicationDelegate 类。

有人可以解释一下...您是否也有可能访问 UIApplicationDelegate 对象/类的方法?差异在哪里?

谢谢

4

3 回答 3

1

如果您用 Java 术语说话,那么在您的示例中,您正在扩展(通常称为子类化) UIResponder 类。

您的示例还实现了 UIApplicationDelegate,这类似于实现一个接口,您必须定义 UIApplicationDelegate 协议的所需方法,并且您可以选择实现可选方法。

与 Java 类似,您只能扩展或子类一个类,但您可以在您的类中实现多个委托协议

如果您想了解更多,Apple 的协议指南非常方便:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html

于 2012-06-26T08:50:40.770 回答
0

在非常基础的层面上,我们可以看到这是在目标 C 中实现多重继承的一种形式。

由于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 回答