object-c协议(protocol)

 协议(类似于接口) 


定义:协议是多个类,共享的一个方法列表。(协议中列出的方法没有相应的实现,计划由其他人来实现;实际上有些可以选择实现,有些必须实现)

1.协议的声明: 

@protocol NSCopying

-(id) copyWithZone: (NSZone*) zone;

@optional  //这个指令之后列出的所有方法都是可选的,以上的是必须实现的。

-(void) deal;

@end

2.一个类遵循某个协议,那么其子类也要遵循(分组也一样)

3.对于一个类来说,可以定义属于自己的协议,要求继承自己的子类都实现这些方法。(即为某一个类定义一个协议,也是协议的一种运用)

4.可以使用conformsToProtocol:方法检查一个对象是否遵循某项协议。

例如:

id currentObject;
...
if([currentObject conformsToProtocol:@protocol(Drawing)] == YES)
{...}//使用@protocol 指令获取一个协议名称,并产生一个Protocol对象,作为参数给conformsToProtocol
5.测试currentObject是否实现了可选的deal方法,可以使用:

if([currentObject respondsToSelector: @selector(deal)] == YES)
{...}
6.id:声明一个指向对象的指针。

id <Drawing> currentObject ; //告知编译器currentObject对象将包含遵守Drawing协议的对象。

7.定义协议时,可以拓展自身协议:

@interface Drawing3D<Drawing>  //说明Drawing3D也使用了协议Drawing

8.分类也可以采用多项协议

@interface Fracton(stuff) <NSCopying,NSCoding>  (这种生命如果不想在公开的.h文件中实现,也可以在实现的.m文件中进行)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值