ios设计模式--委托模式

 更新时间:2023年03月24日 15:20:37   作者:智慧大石  
这篇文章主要介绍了ios设计模式中的委托模式,希望对大家学习ios框架有所帮助,下面让我们一起来了解一下吧

Cocoa Touch框架下使用大量使用委托(delegation),根据苹果公司的文档,delegate是Cocoa Touch框架所采用的委托模式的一种形式。

理解委托,所需要的准备

(一)协议

Objective-C的协议,类似于C++的抽象类,JAVA的接口。其具体定义如下

@protocol MyButtonDelegate <NSObject>
@optional
 - (void) didPressButton;
 @end

@protocol为协议关键字,MyButtonDelegate为协议名,didPressButton为协议里的方法。

(二)id类型

id类型可以理解为可以指向任意对象的指针,

其定义为:

typedef struct objc_class *Class;
typedef struct objc_object {
    Class isa;
 } *id;

(三)适配器模式

在设计模式中,并没有委托模式。但有适配器模式,适配器模式可以这样来理解,假如我们去了香港,要给我电脑接电源,发现有些插板怎么也插不上(香港使用的是英式插头),只能先插个转换器,在把电脑接到转换器上。这就是生活中的适配器模式,大多数委托模式,就是实现的对象适配器的功能,

(四)实例

我们想实现一个自己构建的类似于UIButton功能的组件。首先,从UIView继承下来Mybutton,这时候遇到一个问题,我们不知道未来谁会用到Mybutton,但我们知道每个用到mybutton的,都需要在这个按钮被按下时,获得一个消息,来告诉用到mybutton的对象(Adaptee),mybuttton被按下。

这时候我们的适配的如下:

@protocol MyButtonDelegate <NSObject>
@optional
 - (void) didPressButton;
@end

我的Adapter是Mybutton,其通过

来实现对Adaptee的调用,其中Adaptee可以是任意对象,在这个例子中,是RootViewController(实现了协议)

(五)委托模式的深入理解

委托模式的实现,也可以通过Block来实现,但仅适合一次性回调执行的代码。

到此这篇关于ios设计模式--委托模式的文章就介绍到这了,更多相关ios设计模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Unity3D实验室之iOS真机闪退的解决方法

    Unity3D实验室之iOS真机闪退的解决方法

    下面小编就为大家分享一篇Unity3D实验室之iOS真机闪退的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • iOS开发中使用UILabel设置字体的相关技巧小结

    iOS开发中使用UILabel设置字体的相关技巧小结

    这篇文章主要介绍了iOS开发中UILabel设置字体的相关技巧小结,代码基于传统的Objective-C,需要的朋友可以参考下
    2016-01-01
  • iOS统计项目的代码总行数

    iOS统计项目的代码总行数

    最近一个项目有段时间了,不知道怎样可以统计出写了多少行代码,如何处理这个问题呢,下面我们来探讨下。
    2015-06-06
  • 用iOS代码获取APP启动页图片

    用iOS代码获取APP启动页图片

    这篇文章主要为大家详细介绍了用iOS代码获取APP启动页图片的相关资料,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • iOS开发之手动布局子视图

    iOS开发之手动布局子视图

    这篇文章主要介绍了iOS开发之手动布局子视图,从入门到精通帮助大家更好的开发iOS项目,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • IOS实现展开二级列表效果

    IOS实现展开二级列表效果

    本文通过实例代码向大家演示在IOS中如何实现展开二级列表的效果,这个功能效果很好,对于日常开发APP中很有帮助,下面一起来看看如何实现吧。
    2016-08-08
  • 键盘弹出时会覆盖文本框怎么解决

    键盘弹出时会覆盖文本框怎么解决

    在一些网站登陆界面,我们经常会见到,键盘的出现与隐藏操作,那么基于代码是如何实现的呢?下面小编写了具体代码介绍,特此分享到脚本之家平台,供大家参考
    2016-04-04
  • 开发绘图、手势综合App注意点

    开发绘图、手势综合App注意点

    本篇文章主要给大家详细讲述了在IOS开发绘图、手势综合App容易遇到的坑以及注意事项等内容,有兴趣的朋友参考下吧。
    2018-02-02
  • 解决iOS下无法触发focus事件的问题

    解决iOS下无法触发focus事件的问题

    今天小编就为大家分享一篇解决iOS下无法触发focus事件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Xcode中iOS应用开发的一般项目目录结构和流程简介

    Xcode中iOS应用开发的一般项目目录结构和流程简介

    这篇文章主要介绍了Xcode中iOS应用开发的一般项目目录结构和流程简介,包括项目所需的一些平台路径如模拟器路径等的介绍,需要的朋友可以参考下
    2016-02-02

最新评论