OC - 协议的继承
截取改编自:https://www.jianshu.com/p/1ba089d69c73
1、普通协议的用法
@protocol MyProtocol
- (void)foo;
@end
2、继承根协议的用法
@protocol MyProtocol<NSObject>
- (void)foo;
@end
3、协议冲突
协议的属性名不能冲突
假设自定义一个继承自 UITextField 的子类 MyTextFeild;
同时自定义一个代理 MyTextFeildDelegate 的属性如下:
@protocol MyTextFieldDelegate <NSObject>
//...
@property (nonatomic, weak) id <MyTextFeildDelegate> delegate;
这时候会报错的,因为 UITextField 本身就有 delegate 属性,类型为 UITextFieldDelegate;
而 MyTextFeild 的 delegate 协议类型与 父类 UITextField 的协议类型冲突。
4、多继承
一个解决办法是:
利用协议的多继承:让子类中自定义的协议,继承自系统父类中的系统协议。
@protocol MyTextFieldDelegate <NSObject,UITextFieldDelegate>
//...
@property (nonatomic, weak) id <MyTextFeildDelegate> delegate;