对于协议的认知:
协议就是定义了一组方法,然后让其他类去实现
协议的关键字 @protocol
协议里面不能声明变量只能声明方法,任何类只要遵守协议就可以使用所有的声明,父类遵守了某个协议就相当于子类也遵守
在协议中也是可以遵守协议
代码演示:
这里要注意的是,上面的代码中NSObject不是我们之前说的NSObject类了,而是NSObject协议,他也是OC中第一个协议。
协议的定义格式
@protocol 协议名称 <父类协议>
方法声明列表
@end
协议中定义的方法还有两个修饰符:
@required:这个表示这个方法是其他类必须实现的,也是默认的值
@optional:这个表示这个方法对于其他类实现是可选的
两个修饰符的主要用途是用于程序员的交流
如何遵守协议
这里是 Person 这个类遵守啦 mypotocol 这个协议
格式:
@interface 类名 : 父类名 <协议名称>
@end
如何实现
最后在主函数中调用
调用结果
协议中也是可以遵守协议
格式:
@protocol 协议名称 <其他协议名称>
@end
协议和类中都是可以遵守多个协议的。就如同java 中的多实现
格式
@interface 类名:父类名 <协议名称,其他协议名称>
@end
@protocol 协议名 <协议名称,其他协议名称>
@end
协议也可以在定义一个变量的时候来限制这个变量保存的对象遵守某个协议
格式:
类名<协议名称> *变量名
id <协议名称> 变量名