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