- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近开始使用 iOS 应用程序。我可以看到,许多 UIKit 提供的现成对象都使用委托(delegate)模式。例如,UITableView 有一个数据源和一个为其提供数据和其他 TableView 功能的委托(delegate)。
那么,这个委托(delegate)模式背后的底层设计模式是策略设计模式吗?对我有利的原因是,在策略模式中,委托(delegate)对象有一个对委托(delegate)的引用,该委托(delegate)确认了一个特定的接口(interface)。
可以这么说,我有一个 MyDataSource 类,它确认协议(protocol)/接口(interface) UITableViewDataSource 并且我在 MyDataSource 中实现了行为。然后我将 MyDataSource 的一个实例传递给 UITableView。这就是我们在策略模式中所做的。那么我的理解对吗?
最佳答案
您指的是一个名为 delegation 的 Cocoa/CocoaTouch 设计模式.我认为您的理解非常准确,但是在您在帖子末尾给出的示例中,很可能是 UITableView 向 MyDataSource 对象发送消息并传递本身作为协议(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/
我正在寻找匹配 /(?=\W)(gimme)(?=\W)/gi 或类似的东西。 \W 应该是零宽度字符来包围我的实际匹配项。 也许有一些背景。我想用添加的文字填充替换某些单词(总是 \w+),但前提是
如何在不使用 Intent 连接到 VPN 服务的情况下以编程方式检测流量是否正在通过 VPN。有系统调用吗? 最佳答案 这个有效: private boolean checkVPN() {
我是一名优秀的程序员,十分优秀!