只是一个关于扩展类和实现它的区别的一般问题。
@interface AppDelegate : UIResponder <UIApplicationDelegate>
在我的示例中,我的类 AppDelegate 从 UIResponder 类扩展,但实现了 UIApplicationDelegate 类。
有人可以解释一下...您是否也有可能访问 UIApplicationDelegate 对象/类的方法?差异在哪里?
谢谢
只是一个关于扩展类和实现它的区别的一般问题。
@interface AppDelegate : UIResponder <UIApplicationDelegate>
在我的示例中,我的类 AppDelegate 从 UIResponder 类扩展,但实现了 UIApplicationDelegate 类。
有人可以解释一下...您是否也有可能访问 UIApplicationDelegate 对象/类的方法?差异在哪里?
谢谢
如果您用 Java 术语说话,那么在您的示例中,您正在扩展(通常称为子类化) UIResponder 类。
您的示例还实现了 UIApplicationDelegate,这类似于实现一个接口,您必须定义 UIApplicationDelegate 协议的所需方法,并且您可以选择实现可选方法。
与 Java 类似,您只能扩展或子类一个类,但您可以在您的类中实现多个委托协议
如果您想了解更多,Apple 的协议指南非常方便:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html
在非常基础的层面上,我们可以看到这是在目标 C 中实现多重继承的一种形式。
由于Objective C只支持单继承,但我们可以通过协议实现多继承(类似于java中的接口)。
所以当我们继承一个类时——我们说我们扩展了它。
当我们使用协议来访问通用功能时(为了有多个继承) - 我们说它实现了。
扩展一个类 = 继承它。即,您不覆盖的方法将在超类中调用。
实现委托协议只是说明您的类应该实现哪些方法。
和
http://www.thepensiveprogrammer.com/2010/05/objective-c-protocols-and-delegates.html