UIKit背后的设计模式

时间:2014-12-23 03:19:46

标签: ios objective-c design-patterns

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

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

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

1 个答案:

答案 0 :(得分:2)

您所指的是名为delegation Cocoa / CocoaTouch 设计模式。我认为您的理解非常准确,但是在帖子结尾处给出的示例中,很可能是 UITableView MyDataSource 对象发送消息并传递本身作为协议方法参数之一。

一个例子就是 -

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

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

此外, UITableView 必须能够访问 MyDataSource 对象。这可以通过设置 delegate / dataSource 属性来实现。它通常是 id 类型,并且被弱引用。

请查看this SO post以获取有关与委派同义的策略模式的更多信息。