繁体   English   中英

Objective-C协议

[英]Objective-C Protocols

我在名为TileOverlay.h的文件中遇到了以下代码:

@protocol TileOverlay <MKOverlay>

我试图明确地了解这是在做什么。 然后,其他几个叠加层将导入此.h文件。 这个文件实际上是否只是创建MKOverlay类的修改版本?

如果没有,您能否澄清一下它的作用?

MKOverlay是协议,而TileOverlay是扩展MKOverlay的协议。

符合TileOverlay协议的任何类也符合MKOverlay协议。

有关详细说明,请参阅文档中的协议中的协议

您可以想到诸如Java或C#中的接口之类的协议,基本上它们声明实现类必须遵循的协定。 区别在于在Objective C中,您可以使某些声明的方法为可选。

在Objective-C中的协议就是您在Java或C#中称为接口的协议。 这是其他任何类都可以实现,在OBJ - C的说法符合合同。

这个:

@protocol TileOverlay <MKOverlay>

定义一个名为TileOverlay的协议,该协议本身扩展了MKOverlay 那就是通过符合TileOverlay您还必须符合MKOverlay

就像Jave或C#中的接口一样,Obj-C中的协议与实现无关。 它什么也没做。 它只是编译时和运行时的标记(如果需要),以检查某些功能是否存在。

这称为协议继承。

MKOverlay是一个协议,为对象定义了一组方法。

TileOverlay继承了MKOverlay ,这意味着符合对象TileOverlay ,应该实现从方法MKOverlay从和方法TileOverlay

是一个更多讨论协议继承的链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM