协议Protocol
一、协议的基本概念
1、protocol它可以声明一些必须实现的方法和选择实现的方法,这与java是完全不同的
2、在写java1是
二、Protocol语法格式
1、定义
@protocol 协议名称
//方法声明列表
@end
2、类遵守协议
@interface 类名 :父类<协议名称1,协议名称2,..>
@end
三、Protocol与继承的区别
1、继承之后默认就有实现,而protocol只有声明
2、相同类型的类可以使用继承,但不同的类型只能使用protocol
3、protocol可以用于存储方法的声明,可以将多个类共同的方法抽取出来,以后让这些类遵守协议即可
四、注意:
1、协议只能声明方法,不能声明属性
2、父类遵循了每某个协议,那么它的子类也遵循这个协议
3、在oc中一个类可以遵循一个或多个协议
4、oc中的类只有一个父类,也就是说只有单继承,但遵循多层继承
5、协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一个协议中的方法声明
五、基协议
1、NSObject是一个基类,最根本最基本的类,任何其它类最终都要继承它
2、NSObjec也是一个基协议
3、建议每个新的协议都要遵守NSObject协议
六、@required和@optional关键字
1、协议中有两个关键字可以控制方法是否要实现(默认是@required)
2、@requid:这个方法必须要实现(若不实现,编译器会发出警告)
3、@optional:这个方法不一定要实现
4、若果没有使用任何关键字修饰协议中的方法,那么该方法默认就是@required
5、如果协议中的方法用@required来修饰(或什么关键字都没修饰),而遵守协议的类又没有实现该方法,那么会报警
6、如果用@optional来修饰方法,而遵守协议的类又没有实现该方法,也不会发出警告