在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
其实OC中的协议有点像接口或称抽象类。OC中的协议定义了一系列的方法 , 有些方法是必须实现的 , 有些方法是可以不用实现的。 定义一个协议的关键字是 : @protocol 例如: @protocol Ainy -(void) Print; @end 如上就是一个协议 , 协议的名称为Ainy 。定义了一个方法为-(void) Print 。 注意协议是在h文件中定义的 , 例如:
如何实现这个Ainy协议:使用<>括号 , 如下 我新建了一个Dog类 , 继承了Animal , 并且需要实现协议Ainy代码如下: 在Dog.m中的实现如下:
当然 , 可能在Animal中定义了 Aonaufly协议 , 如何同时显示Ainy 和 Aonaufly协议呢 ?? @interface Dog : Animal <Ainy , Aonaufly>用,隔开 问题来了 , 怎么定义可以不需要实现的方法 和 如何定义一定要实现的方法 @optional 定义不一定需要实现的方法(在其后的在所有的方法) @required 定义一定需要实现的方法(在其后的所有方法) 如何知道此类实现了Ainy协议了呢?? id Object; if( [Object conformsToProtocol : @protocol (Ainy)] == YES ){ } 当让如果你知道Object一定实现了协议Ainy , 你可以这么干 id <Ainy> Object; 加入Object实现了协议Ainy , 如何知道Object实现了Ainy的方法 Dance呢 , 因为Dance是可以不用实现的方法 if( [Object respondsToSelector: @selector (Dance)] == YES ){ } 本文转自Aonaufly51CTO博客,原文链接: http://blog.51cto.com/aonaufly/2046979,如需转载请自行联系原作者 |
请发表评论