Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 基础或UIKIT组合示例_Ios_Composition - Fatal编程技术网

Ios 基础或UIKIT组合示例

Ios 基础或UIKIT组合示例,ios,composition,Ios,Composition,我正在努力更好地理解构图的设计原则。在UIKIT或基础框架中有什么例子吗? 根据我的经验,在明确思考这个问题之前,似乎继承是这两个框架的主要模式。也许我把你的问题搞错了,但也许这就是你想要的: 这里有一个类似的问题: 下面是对模式的非常好的描述,也许可以让您更好地了解它: 遗传在基础上是罕见的,并不是UIKIT的主要模式。在这两种情况下,合成都更为常见 继承和组合之间的区别通常表示为is-A和HAS-A。is-A方法是子类。HAS-A方法是授权 考虑一个只接受某些字符的文本字段。在IS

我正在努力更好地理解构图的设计原则。在UIKIT或基础框架中有什么例子吗?


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

也许我把你的问题搞错了,但也许这就是你想要的:

这里有一个类似的问题:

下面是对模式的非常好的描述,也许可以让您更好地了解它:


遗传在基础上是罕见的,并不是UIKIT的主要模式。在这两种情况下,合成都更为常见

继承和组合之间的区别通常表示为is-A和HAS-A。is-A方法是子类。HAS-A方法是授权

考虑一个只接受某些字符的文本字段。在IS-A样式中,您将子类化
UITextField
。这在iOS中并不常见。相反,您传递一个委托(任何符合
的内容),文本字段在需要时查阅它。这是一个HAS-a方法。文本字段“有一个”委托

考虑一个
UITableView
。你想做一张歌曲表。在IS-A(继承)方法中,您将子类化
UITableView
,并生成一个
SongsTableView
。在HAS-A(composition)方法中,您可以创建一些其他对象(一个
SongsDataSource
)并将其交给
UITableView
。在这种情况下,UIKit使用了两者中的一点;您为
UITableView
提供了一个数据源,但该数据源通常(但不要求)是
UITableViewController
的子类

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


该基金会几乎没有IS-A。除了<代码> NSbOuts<代码>之外,很少有子类子类。考虑<代码> NStestDebug字符串< /代码>。它没有子类
NSString
。它有一个
NSString
。这是一般的做事方法。您几乎从不创建自己的子类:<代码> NScord,<代码> NSArray < /代码>,<代码> NDATE < /COD>,<代码> NStUD> <代码>,或者任何其他常见类型。您可以将它们组合起来。

那么将属性添加到另一个对象是合成模式的一部分吗?例如,
@property(…)UITextField*loginTextField
添加到UIViewController被视为组合?如果是的话,我看不到用继承做这件事的替代方法。或者这只是光谱组成端的一个极端例子?是的,属性绝对是组成的例子。在OOP中很难避免组合。它是范例的基本部分,甚至比子类化更重要(基于原型的OOP,比如JavaScript,甚至没有子类化)。视图控制器是系统中最复杂的部分之一,在组合和继承方面都有重要的用途,因此很可能是最难获得清晰图像的部分。首先考虑一些简单的事情,比如文本字段。考虑如何使用NoMulnLyTeXFieldAdvor构建一个No.No.TythFieldVS。