gpt4 book ai didi

ios - UIKit 背后的设计模式

转载 作者:行者123 更新时间:2023-11-29 10:34:52 28 4
gpt4 key购买 nike

我最近开始使用 iOS 应用程序。我可以看到,许多 UIKit 提供的现成对象都使用委托(delegate)模式。例如,UITableView 有一个数据源和一个为其提供数据和其他 TableView 功能的委托(delegate)。

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

可以这么说,我有一个 MyDataSource 类,它确认协议(protocol)/接口(interface) UITableViewDataSource 并且我在 MyDataSource 中实现了行为。然后我将 MyDataSource 的一个实例传递给 UITableView。这就是我们在策略模式中所做的。那么我的理解对吗?

最佳答案

您指的是一个名为 delegationCocoa/CocoaTouch 设计模式.我认为您的理解非常准确,但是在您在帖子末尾给出的示例中,很可能是 UITableViewMyDataSource 对象发送消息并传递本身作为协议(protocol)方法参数之一。

一个例子是这样的——

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

上述方法由delegate对象实现,会实现自己的策略。调用此方法的 collectionView 作为参数之一传入。

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

请查看this SO post有关策略模式与委托(delegate)同义的更多信息。

关于ios - UIKit 背后的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27613615/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com