iOS学习基础 设计模式详解

移动开发 iOS
本文介绍的iOS学习基础 设计模式详解,以图文的形式来介绍,清晰明了。我们来看内容。

iOS学习基础 设计模式详解是本文要介绍的内容,主要介绍在iOS中有一些基本的设计模式,我们先来看内容。

delegation

protocol

model-vew-controller

target-action

notification

declared properties

下面分别介绍一下各个设计模式的用途。

Delegation

这是Apple的权威解释。

delegation,委托模式(另外有个常用的proxy模式,二者的区别是代理模式一般要更严格,实现相同的接口,委托只是引用被委托对象),是简单的强大的模式,可让一个对象扮演另外对象的行为。委托对象保持到另外对象的引用,并在适当的时候发消息给另外对象。委托对象可以在发送消息的时候做一些额外的事情。

在cocoa框架中的委托模式,委托对象往往是框架中的对象,被委托对象是自定义的controller对象。委托对象保持一个到被委托对象的弱引用。

在该文档中所举的例子是mac下开发的示例。

iOS学习基础 设计模式详解

这里被委托对象是NSWindow类的一个实例,该类声明了协议(protocol),其中有个方法是windowShouldClose,当用户点击窗口的关闭按钮的时候,窗口对象将发送windowShouldClose消息给代理对象(windowDelegate),询问是否确认关闭窗口。代理对象返回一个bool值,因此控制了窗口对象的行为。

在iOS中也有类似的示例,在创建的项目中,classes目录中会有xxAppDelegate,这就是委托类。在该委托类实例中,引用了UIWindow和Controller。可以类似上面mac示例控制被引用对象的行为。

Protocol

可以认为是java中的接口(interface)。在iOS中有两种protocol:

正式的protocol:通过@interface声明,要求子类实现方法,可以强制实现(@required)或者可选(@optional),正式的protocol是对objc语言的扩展;

非正式的protocol是NSObject的一个category,category是objc语言的一个特性,可以让你为一个类增加方法而不需要实现子类。非正式protocol实现方法是可选的。在可选的protocol方法未引入objc 2.0以前,非正式的protocol是在foundation和appkit类中实现委托的基本方式

Model-View-Controller

MVC设计模式大家应该很熟悉了,不多说了。

iOS学习基础 设计模式详解

Target-Action

target-action是个设计模式。对象保持必要的信息,当事件发生的时候发送消息给其他对象。所保持的信息有两部分数据组成:

action selector,定义要调用的方法名称标识;

target,接收消息的对象。

当被称作action message的事件发生,将向target发送action selector定义的方法消息。

target-action模式一般用于自定义的controller按照应用规范定义的方式处理action message。

iOS学习基础 设计模式详解

Notification

一个notification,即一个通知,是一个消息,是用于通知一到多个观察者对象程序当前有一个事件发生。这里,接收通知的一方叫观察者,observer。实际上是观察者模式。

这里,发送通知的对象,并不知道谁会收到这个通知。这样通知者和观察者之间松散耦合。

iOS学习基础 设计模式详解

Declared property 

字面意思是声明的属性。比如:

  1. @property (<#attributes#><#type#> <#name#>

是增强objc语法,简化编写代码的“语法糖”性质的东西。

小结:iOS学习基础 设计模式详解的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-26 15:29:36

Cocoa 模式

2021-06-29 08:54:23

设计模式代理模式远程代理

2009-08-18 11:03:31

Observer设计模

2012-07-10 02:01:53

设计模式命令模式

2011-07-07 11:03:07

iOS MVC Objective-

2009-07-10 16:14:29

MVC设计模式Swing

2011-04-21 09:46:41

设计模式

2021-07-21 16:30:38

iOSAPP架构

2010-01-21 09:08:53

.NET设计模式

2009-07-09 17:30:59

Singleton模式C++ SingletJava Single

2023-07-03 07:39:43

Spring框架设计模式

2021-07-29 14:42:55

设计模式Java

2011-04-29 13:15:16

iOS程序图标iOS图标设计iOS

2024-04-18 00:22:10

设计模式接口代码

2010-02-05 17:00:06

C++单例模式

2010-06-01 12:49:04

SVN分支模式

2011-08-16 14:59:31

IOS开发ViewDidUnloiOS 5

2023-09-22 11:58:49

2021-08-04 06:56:49

工厂设计模式

2022-03-15 09:00:00

机器学习软件开发MLOps
点赞
收藏

51CTO技术栈公众号