当前位置: 首页 > 知识库问答 >
问题:

UIKit 背后的设计模式

马泰
2023-03-14

我最近开始使用iOS应用程序。我可以看到,UIKit提供的许多现成的对象都使用了委托模式。例如,UITableView有一个datasource和一个委托,用于提供数据和其他表视图功能。

那么,这个委托模式、策略设计模式背后的底层设计模式是什么?对我有利的原因是,在策略模式中,委托对象具有对委托的引用,该引用确认了特定的接口。

比方说,我有一个类MyDataSource,它符合协议/接口UITableViewDataSource,我实现了MyDataSource中的行为。我将MyDataSource的一个实例传递给UITableView。这就是我们在战略模式中所做的。那么我的理解对吗?

共有1个答案

张鸿宝
2023-03-14

你所指的是一个名为委托的Cocoa/CocoaTouch设计模式。我认为你的理解非常准确,但是在你文章最后给出的例子中,很可能是UITableView向MyDataSource对象发送一条消息,并将其自身作为协议方法参数之一传入。

举个例子,比如-

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

上述方法由委托对象实现,并将实现自己的策略。调用此方法的集合视图作为参数之一传入。

此外,UITableView必须有一种访问MyDataSource对象的方法。这是通过设置委托/dataSource属性来实现的。它通常是id类型并且是弱引用的。

请查看这篇SO帖子,了解更多关于战略模式等同于授权的信息。

 类似资料:
  • 我正在检查EF6代码。我遇到了IEntityWrapper接口,BaseEntityWrapper类和EntityWrapper。 这里实现的设计模式是什么? https://github.com/aspnet/EntityFramework6/blob/master/src/EntityFramework/Core/Objects/Internal/IEntityWrapper.cs https

  • 问题: 如何更改UIkit图标的颜色?具体来说,我想更改复选框图标的背景颜色。 这里是指向UIkit表单文档的链接。 我想改变背景的颜色。

  • 在WWDC 2013年第226期会议上介绍的iOS7中,有人尝试过模糊效果吗? 我尝试使用15:00时提到的代码片段: 但是代码不会运行,因为它调用的方法和类甚至不在API中。 此外,我还下载了示例项目,并以快照的方式运行。该项目甚至没有编译,因为导入的类根本不在那里。示例项目…认真地。。。 有人知道有没有办法不用第三方框架就能在iOS 7中进行模糊处理?

  • 各大设计模式例子参考:CSDN专栏 . C++ 设计模式 系列博文 设计模式工程目录 单例模式 单例模式例子 抽象工厂模式 抽象工厂模式例子 适配器模式 适配器模式例子 桥接模式 桥接模式例子 观察者模式 观察者模式例子 设计模式的六大原则 单一职责原则(SRP,Single Responsibility Principle) 里氏替换原则(LSP,Liskov Substitution Prin

  • 一、概述 二、创建型 1. 单例(Singleton) 2. 简单工厂(Simple Factory) 3. 工厂方法(Factory Method) 4. 抽象工厂(Abstract Factory) 5. 生成器(Builder) 6. 原型模式(Prototype) 三、行为型 1. 责任链(Chain Of Responsibility) 2. 命令(Command) 3. 解释器(Int

  • 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 本教程将通过 Java 实例,一步一步向您讲解设计模式的概念。 现在开始学习设计模式! 谁适合阅读本教程? 无论您是新手,还是老手,本教程都值得一读。对于那些