gpt4 book ai didi

ios - Foundation 或 UIKit 组合示例

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:02:19 24 4
gpt4 key购买 nike

我正在努力更好地理解码合的设计原则。 UIKit 或 Foundation 框架中是否有这方面的示例?

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/ObjC_classic/index.html

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKit_Framework/

根据我的经验,在明确考虑这个问题之前,继承似乎是这两个框架的主要模式。

最佳答案

继承在 Foundation 中很少见,也不是 UIKit 的主要模式。在这两种情况下,组合更为常见。

继承和组合之间的区别通常表示为 IS-A 与 HAS-A。 IS-A 的方法是子类化。 HAS-A 方法是委托(delegate)。

考虑一个您只想接受特定字符的文本字段。在 IS-A 风格中,您将子类化 UITextField .这在 iOS 中并不常见。相反,您传递一个委托(delegate)(任何符合 <UITextFieldDelegate> 的东西),文本字段在需要时咨询它。这是一种 HAS-A 方法。文本字段“有一个”委托(delegate)。

考虑一个 UITableView .你想制作一张歌曲表。在 IS-A(继承)方法中,您将子类化 UITableView并制作一个SongsTableView .在 HAS-A(组合)方法中,您将创建一些其他对象(SongsDataSource)并将其提供给 UITableView。 .在这种情况下,UIKit 会同时使用两者;你给UITableView一个数据源,但该数据源通常(但不是必须)是 UITableViewController 的子类.

类似地,虽然将 UIView 子类化有些常见或 CALayer ,使用“库存” View 和图层并通过添加子组件来构建它们也很常见。这就是 HAS-A 方法。

Foundation 中几乎没有 IS-A。除了 NSObject 之外,您很少对基础类进行子类化.考虑 NSAttributedString .它不子类 NSString .它一个NSString .这是 Foundation 中通常的做事方式。您几乎从不创建自己的 NSString 的子类, NSArray , NSDate , NSNumber或 Foundation 之外的任何其他常见类型。您可以将它们结合起来。

关于ios - Foundation 或 UIKit 组合示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28372192/

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