类包装器和Java以及Objective-C中的单例有什么区别?



我听说"类包装器"这个词经常流传,我很好奇它是什么。我在这个网站上阅读了有关它们的解释,它们基本上听起来像一个单例和Objective-C。 我的两个问题是:1. 类包装器中的单例有什么区别?2. 类包装器是否曾经在 iOS 项目中使用过,或者我们在 iOS 世界中是否更频繁地使用单例?

我想你对这些实体之一感到困惑,它们丝毫没有相似之处(除了是软件工程的一部分......

单例是单个对象(您喜欢的任何类),可以通过您喜欢的任何代码从整个项目中的任何位置访问它。 它是空间中的单个点,可以从空间中的任何其他点引用。

"包装类"是包装另一个类(或基元)的类。 假设您要将 int 传递给函数或方法,该方法修改了该 int,并且您希望调用对象看到更改。 由于 int 是按值而不是按引用传递的(默认情况下),因此调用方将忽略您在被调用函数中对该 int 所做的任何更改。 因此,调用方看不到 int 值的变化。 现在,如果您创建一个Integer对象并使其包装一个 int,您现在可以通过引用函数或方法将该对象传递Integer,修改Integer对象并将修改后的值返回调用函数。 Wrapper Class将一个对象(或基元)包装到另一个对象中,以赋予其不同的功能。

单例和类包装器是两个不同的概念。单例是指一个类,其唯一作用是拥有一个实例,因此得名。假设您要构建一个通讯簿并在其中存储多个联系人,如果应用程序的目的只是跟踪单个通讯簿中的联系人,则应用程序中只有一个通讯簿实例而不是创建多个通讯簿是有意义的。

在 Obj-C 类包装器中,形成了桥接从 C 语言继承的基元数据类型并为其提供对象表示的概念。您给出了浮点数据类型的示例。在数字的情况下,基础框架提供了抽象的NSNumber类来"包装"原始数据类型,如浮点数或int,并给你一个对象表示。从那里,您可以将它们存储在数组或字典中,或者将它们作为普通对象处理(发送消息,扩展等)。泛型类包装器的另一个很好的例子是NSValue类,它允许您为CGPoint或CGRect创建对象表示,这些表示在iOS中广泛使用。

最新更新