我听到“Class Wrapper”一词漂浮在很多地方,我很好奇它是什么。我在这个网站上阅读了有关它们的解释,基本上你只是听起来像Singleton和Objective-C。我的两个问题是: 1.类包装器中的单例有什么区别? 2.类包装器是否曾在iOS项目中使用过,或者我们是否经常在iOS世界中使用单例?
答案 0 :(得分:2)
单身人士和类包装是两个不同的概念。单例指的是一个类,其唯一的作用是拥有一个实例,因此就是名称。假设您想构建一个地址簿并在其中存储多个联系人,那么在您的应用程序中只有一个地址簿实例而不是创建多个地址簿是有意义的,如果您的应用程序的目的只是跟踪一个地址簿中的联系人单一地址簿。
在Obj-C类中,包装器形成了桥接从C语言继承的原始数据类型并具有对象表示的概念。您举了一个float数据类型的例子。在数字的情况下,基础框架提供抽象的NSNumber类来包装'围绕原始数据类型(如float或int)并为您提供对象表示。从那里,您可以将它们存储在数组或字典中,或者将它们作为普通对象处理(发送消息,扩展等)。通用类包装器的另一个很好的例子是NSValue类,它允许您为CGPoint或CGRect创建对象表示,这些表示在iOS中广泛使用。
答案 1 :(得分:2)
我认为你对这些实体中的哪一个感到困惑,它们丝毫不相似(除了作为软件工程的一部分......)。
单例是一个单独的对象(您喜欢的任何类),可以通过您喜欢的任何代码从整个项目的任何位置访问。它是太空中的一个点,可以从太空中的任何其他点引用。
A" Wrapper Class"是一个包装另一个类(或原始)的类。假设您要将int传递给函数或方法,该方法会修改该int,并且您希望调用对象查看更改。由于int是通过值而不是通过引用传递的(默认情况下),调用者会忽略对被调用函数中的int所做的任何更改。因此调用者看不到int值的变化。现在,如果您创建一个Integer
对象并使其包装一个int,您现在可以通过引用函数或方法传递该Integer
对象,修改Integer
对象并将修改后的值恢复为调用功能。 Wrapper Class
将对象(或基元)包装到另一个对象中,以赋予它不同的功能。