OC - 协议的继承

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;
发布了43 篇原创文章 · 获赞 8 · 访问量 4584

猜你喜欢

转载自blog.csdn.net/weixin_45390999/article/details/104487648
今日推荐