慌不择路地浅谈一下iOS的协议protocol
来源:互联网 发布:ubuntu.vmx损坏 编辑:程序博客网 时间:2024/06/06 01:19
协议,就是一个方法列表,它声明了可以被任意类实现的方法。换句话来说,就是所有的对象,只要遵循了该协议,则拥有了这个方法列表的方法的声明。
注:在iOS当中,协议经常与代理委托结合使用,但是,这两者之间不要混为一谈。
今天写一篇关于协议的运用场景,给大家提供一种编写组件的思路,我们写一个协议:
/** 定义一套协议列表 */@protocol LBEmptyDataProtocol- (void)lb_setEmptyNoData:(NSAttributedString *)title;- (void)lb_setEmptyNoData:(NSAttributedString *)title block:(LBEmptyDataBlock)block;- (void)lb_setCustomView:(__kindof UIView *)customView;- (void)lb_removeEmptyData;@end@interface LBEmptyNoData : UIView@end
我们可以运用这个协议,很方便的对我们的组件进行拓展:
/** 让这个分类去实现这个协议,从而获得了接口 */@interface UIScrollView (LBEmptyData)<LBEmptyDataProtocol>@end
/** 协议的实现交由相应的类去定制实现 */- (void)lb_setEmptyNoData:(NSAttributedString *)title { [self show:LBEmptyDataTypeNoData block:nil title:title image:nil];}- (void)lb_setEmptyNoData:(NSAttributedString *)title block:(LBEmptyDataBlock)block { [self show:LBEmptyDataTypeNoData block:block title:title image:nil];}- (void)show:(LBEmptyDataSystemType)type block:(LBEmptyDataBlock)block title:(NSAttributedString *)title image:(UIImage *)image { if (self.emptyDataView) { [self.emptyDataView removeFromSuperview]; self.emptyDataView = nil; } ...}
这样写代码的目的,是可以对组件进行拓展,而不会污染原来的代码。
组件写完自然是要做成Spec私有库的,方便自己或者别人进行维护;而关于协议的其他东西, 这里就不啰嗦了,网上有太多的讲解了。
@end
阅读全文
0 0
- 慌不择路地浅谈一下iOS的协议protocol
- 协议的用法 ios protocol
- iOS之协议(protocol)的使用
- iOS 之 协议(protocol)的学习
- iOS中使用协议(protocol)的用法
- ios 正式协议protocol
- iOS协议Protocol
- Protocol 协议总结 - iOS
- iOS protocol 协议
- iOS Protocol 协议
- iOS开发之 协议 protocol
- 协议(Protocol)的用法和代码例子 ios
- IOS开发之——Protocol协议的使用
- iOS 委托Delegate和协议Protocol的理解和应用
- iOS中协议(Protocol)的简单用法
- 协议的使用 Protocol
- protocol协议的创建
- oc的协议(protocol)
- hadoop(3)map reduce
- RBTree
- 反素数入门 zoj 2562 and codefore
- altium designer 方便实用的技巧
- eclipse中git插件的使用(项目提交到码云)
- 慌不择路地浅谈一下iOS的协议protocol
- Hibernate学习之一对一映射
- 翻译 PyMongo 文档
- mybatis和hibernate的区别
- Ueditor编辑器修改字体和字号?
- 软件测试自学指南---从入门到精通
- 理解Play框架线程池
- RBAC
- 常用UNIX网络命令