协议和分类

作者: 东了个尼 | 来源:发表于2019-07-03 09:03 被阅读0次
通过委托与数据源协议进行对象间通信

委托模式的主旨是:定义一套接口,某对象若想接受另外一个对象的委托,则遵守此接口,以便成为其委托对象(delegate)。而另一个对象则可以给委托对象回传一些信息,也可以发生相关事件时通知委托对象。
举例:获取网络数据的类含有一个委托对象,在获取万数据之后,它会回调这个委托对象。如下图所示,EOCDataModel对象就是EOCNetworkFetcher的委托对象。EOCDataModel请求EOCNetworkFetcher“以异步方式执行一项任务”,而EOCNetworkFetcher在执行完这项任务之后,就会通知其委托对象,也就是EOCDataModel
利用协议机制很容易实现

屏幕快照 2019-07-01 下午5.30.02.png
@protocol EOCNetworkFetcherDelegate 
- (void)networkFetcher:(EOCNetworkFetcher*)fetcher did receiveData:(NSData)data;
- (void) networkFetcher:(EOCNetworkFetcher*) fetcher didFailWithError:(NSError *)error;

委托协议名通常是相关类名加Delegate一词语,有了这个协议类就可以用一个属性存放其委托对象了。在本例中,这个类就是EOCNetworkFetcher类。于是这个接口可以写成这样:

@interface EOCNetworkFetcher:NSObject 
@proprety(nonatomic,weak)id <EOCNetworkFetcherDelegate> delegate;
@end
屏幕快照 2019-07-02 上午9.05.19.png
@implementation EOCDataModel ()< EOCNetworkFetcherDelegate >
- (void)networkFetcher:(EOCNetworkFetcher*)fetcher did receiveData:(NSData)data{
}
- (void) networkFetcher:(EOCNetworkFetcher*) fetcher didFailWithError:(NSError *)error{
}
@end
屏幕快照 2019-07-02 上午9.08.33.png
将类的实现代码分散到便于管理的数个分类之中

类中经常容易堆满各种方法,而这种方法的代码则全部堆在一个巨大的实现文件里面。在此情况下,可以通过Objective-C的分类机制,把类代码逻辑划入几个分区中,这对开发与调试都有好处


屏幕快照 2019-07-02 下午4.27.52.png

在实现该类时,所有代码的方法可能会写在一个大文件中。如果还向类中继续添加方法的话,那么源代码文件会越来越大,变得难于管理,所以说应该把这样的类分成几个不同的部分。例如使用分类机制把刚才的类改写成下面这样:

屏幕快照 2019-07-02 下午4.33.13.png

使用分类机制把类的实现代码分成易于管理的小块。
将应该视为私有的方法归为Private中,以隐藏实现细节。

相关文章

  • 协议和分类、

    Demo下载地址、[https://github.com/wnkpzzz/ZCZTestDemo-master] ...

  • 协议和分类

    通过委托与数据源协议进行对象间通信 委托模式的主旨是:定义一套接口,某对象若想接受另外一个对象的委托,则遵守此接口...

  • 15.协议和分类

    1、通过委托与数据源协议进行对象间通信 委托模式为对象提供了一套接口,使其可由此将相关事件告知其他对象。将委托对象...

  • ☆技术问答集锦(四)

    2 TCP 与 UDP 网络层:IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议;传输层:TCP协...

  • 关于协议和分类中的@property

    关于协议和分类中的@property 在@protocol中使用@property只会生成getter 和sett...

  • iOS Protocol、Category中声明属性

    之前一直有一个误区,认为协议和分类中不能用@property 形式声明属性,现在做一下总结: iOS中协议中和分类...

  • 用 // 代替 http:// 有什么好处(自适应https)

    // 缺省协议 //缺省协议的使用,代表资源访问的协议和当前页面保持一致,如果当前页面是http ,采用http协...

  • 12.socket编程 - TCP

    socket抽象层位于应用层和传输层之间,是对传输层TCP协议和UDP协议的封装,可以让我们无需关心复杂的TCP协...

  • Effective Objective-C 2.0 读书笔记四

    第四章 协议与分类 协议和分类都是OC中非常好的特性,善用这些功能会大大增加我们代码的效率。 23. 通过委托与数...

  • 04-Category(分类)/Extension(匿名分类/类

    一、Category 1、Category的基本使用 2、Category的实现原理 分类中的对象方法、类方法、协...

网友评论

    本文标题:协议和分类

    本文链接:https://www.haomeiwen.com/subject/ebrncctx.html