美文网首页iOS Developer
ios 开发委托模式缓存

ios 开发委托模式缓存

作者: 搬运工开发者 | 来源:发表于2017-07-29 09:31 被阅读70次

在iOS开发中,经常使用代理模式和数据源模式,对于可选的协议方法一般需要进行以下代码查处某个委托对象是否能相应特定的选择子:

if (_delegate && [_delegate respondsToSelector:@selector(homeNamePhoneCell:beginEditing:)]) {
        [_delegate homeNamePhoneCell:self beginEditing:textField];
    }

可是如果频繁执行此操作的话,那么除了第一次监测的结果有用之外,后续的监测可能是多余的。如果委托对象本身没有变,那么不大可能会突然响应某个原来不响应的选择子,也不大会突然无法项目某个原来可以响应的选择子。鉴于此,我们可以考虑是否可以把委托对象能否响应某个协议方法这一信息缓存起来,以优化程序的效率。
在C语言中有一个叫“位段”的数据类型可以用来将响应方法缓存起来,当然也可以通过自定义属性来缓存,我们这里使用“位段”进行缓存。
具体实现代码如下:

@interface KKHomeNamePhoneCell (){
   struct {
       unsigned int textFieldValueChange : 1;
       unsigned int textFieldBeginEditing : 1;
   }_delegateFlags;
}

@end

- (void)setDelegate:(id<KKHomeNamePhoneCellDelegate>)delegate {
   _delegate = delegate;
   _delegateFlags.textFieldValueChange = [delegate respondsToSelector:@selector(homeNamePhoneCell:tag:text:)];
   _delegateFlags.textFieldBeginEditing =  [delegate respondsToSelector:@selector(homeNamePhoneCell:beginEditing:)];
}

这样的话每次调用delegate的相关方法之前,就不用监测委托对象是否能响应给定的选择子,而是直接查询结构体里的表示即可以

if (_delegateFlags.textFieldValueChange) {
        
    }

在相关方法要调用很多次时,可以进行这种优化。当然是否需要优化应当依照具体的代码而定,这就需要分析代码的性能,若是发现执行速度需要进行优化改进,则可以使用这种技巧,如果要频繁通过数据源中获取多份相互独立的数据,那么这项优化技术极有可能会提高程序效率。

相关文章

  • ios 开发委托模式缓存

    在iOS开发中,经常使用代理模式和数据源模式,对于可选的协议方法一般需要进行以下代码查处某个委托对象是否能相应特定...

  • [学习笔记]_iOS代理基本使用,界面间传值

    参考链接: 你真的了解iOS代理设计模式吗? iOS开发-Protocol协议及委托代理(Delegate)传值 ...

  • 代码规范(二)

    iOS中委托的设计 1. 要区分好代理和数据源的区别 在iOS开发中的委托模式包含了delegate(代理)和da...

  • 2018Swift之协议(Protocol)和委托代理(Dele

    协议与委托代理回调在之前的博客中也是经常提到和用到的在《Objective-C中的委托(代理)模式》和《iOS开发...

  • IOS开发过程中常用的设计模式

    当下IOS开发的过程中,常用的设计模式有:单例模式、委托模式、观察者模式和MVC模式; 一、单例模式 我们平时常用...

  • swift 的protocol学习笔记

    代理又称为协议,委托,protocol ,是iOS开发中经常用到的设计模式。刚学习iOS的时候不是特别理解代...

  • iOS协议委托缓存

    iOS协议委托模式实现一对一的回调,当频繁执行此操作的话的,可以吧委托对象能否相应某个协议方法这一信息缓存起来,以...

  • [iOS][OC] 复写 delegate accessors

    委托模式是 iOS 开发常用的设计模式,在实现当中必要时可以做一些小优化: 设置 delegate 后,即需要向 ...

  • 委托与通知

    objective-c it分类:IOS 委托(Delegation) 委托是一种设计模式。这种模式虽然简单但是功...

  • 1.对象通信之委托模式

    委托模式的构建 在iOS开发中,对象之间的通信有很多方式,比如说 消息中心(NSNotificationCente...

网友评论

    本文标题:ios 开发委托模式缓存

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