@protocol 协议名称 <NSObject>
//方法的声明;
@end
新建1个协议的方式. NewFile OC-File - protocol
协议的文件名: .h 并且只有1个.h文件.
在协议中,只能用来声明方法,协议的作用:就是专门用来写方法声明的.
@interface 类名 : 父类名 <协议名称>
@end
这个类只是拥有了这个协议中的方法的声明而已. 没有实现.所以 这个类,就应该实现协议中的方法.
@interface 类名 : 父类名 <协议名称1,协议名称2......>
@end
当1个类遵守了多个协议之后,就相当于这个类拥有了所有协议中定义的方法的声明.
那么这个类,就应该实现所有协议中的方法.
如果不实现,其实也不会报错.编译器只是会报警告.
在协议中,如果方法的声明被@required修饰,那么遵守这个协议的类必须要实现这个方法,否则编译器会发出警告.
在协议中,如果方法的声明被@optional修饰,那么遵守这个协议的类可以实现这个方法,也可以不实现这个方法.不实现编译器也不会报警告.
其实,无论是@required还是@optional你都可以不实现. 编译器是不会报错的. 仍然可以编译 运行.
写协议的人,告诉遵守协议的类 哪些方法必须要实现 哪些方法可以不实现.
为什么必须要实现? 因为这个方法我要调用.
默认的是@required
@protocol 协议名称3 <协议名称1,协议名称2......>
@end
那么这个协议3就拥有协议1、协议2……的所有的方法的声明.
如果某个类遵守了协议3.那么这个类就拥有协议1、2、3的所有的方法的声明.
任何协议都必须要间接的或者直接的从NSObject基协议继承.
如果有1个类遵守了A协议,那么这个类就拥有了, A、B协议中的所有的方法的声明.
协议之间继承的语法格式
@protocol A协议名称 <B协议名称>
@end
代表A协议继承自B协议, A协议中既有自己的方法声明,也有B协议中的方法声明.
NSOBject: 这也是1个协议. 也是苹果早就定义好得. 这个协议被NSObject类遵守.
写协议的规范: 任何1个协议,必须要间接的或者直接的去遵守这个NSObject基协议.
协议的名称可以和类的名称相同:
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/yi_zz32/article/details/48845333