协议:
一系列不属于任何类的方法列表,在其中声明的方法可以被任何类实现(类似于c++的抽象类,即接口)可以完成抽象类的功能,完成不同类的信息交换
协议声明和实现
协议的名字必须唯一,协议只需声明,并在遵守协议的类中进行实现
@protocol 协议名
@optional
//可以实现也可以不实现的方法
@required//默认
//必须实现的方法
@endl
------------------------
meeting.h
#import"协议名.h"
@interface Meeting : NSObject<协议名>
@end
-----------------------
meeting.m
@implementation
//协议方法实现
@end
类型检查
id<ASRoomRule> p = currentObject;
//如果curentObject不尊从Drawing协议(对象所属的类中是否尊从协议),在编译时就会报错
if([p conformsToProtocol:@protocol(ASRoomRule)]){
[p noGaming];
}
//是否遵守协议,如果遵守则运行
分类也可以采用协议
@interface Fraction(MathOps)<NSCopying, NSCoding>
@end
定义协议时可以扩展现有的协议
@protocol ASRoomRule<NSObject>
//如果遵守 ASRoomRule协议 同时也就遵守NSObject协议