-4

两者之间的基本区别是什么..?如果有人可以使用 NSInteger 和 NSNumber 的示例进行解释,那就太好了。谢谢

4

5 回答 5

10

主要区别在于它们在内存中的位置,对象存储在堆中,而值类型直接存储在堆栈中......

heap:是用于动态内存分配的内存区域。

stack:是为函数内的自动变量分配的内存部分。数据使用后进先出 (LIFO) 方法存储在堆栈中。

关于 NSInteger 和 NSNumber :

NSInteger 只不过是长整数的同义词,而 NSNumber 是一个 Objective-C 类,具体来说是 NSValue 的子类。

于 2012-06-14T11:06:42.907 回答
8

对象是:成员数据+对数据进行操作的函数

所以,原始数据类型只是数据,没有直接相关的方法。

对象就像一个模块,包括数据和功能(方法在这里)。

NSInteger 是原始数据类型。NSNumber 是对象,它的成员数据可能是 NSInteger。

于 2012-06-14T11:11:28.040 回答
2

原始数据类型存储直接值,例如 NSInteger 存储整数值(32 位整数或 64 位整数,具体取决于编译的架构),对象是类的实例,具有方法、属性等。

为了从 NSNumber 中获取 NSInteger,您可以使用

[aNumber intValue];
于 2012-06-14T11:10:09.443 回答
2

原始数据类型用于存储基本类型的数据,例如字符串、整数和实数。因此,当您声明一个值类型变量时,编译器会留出或分配一块足够大的内存用于该变量。引用类型的工作方式不同。当您使用引用类型时,您将使用两件事,一个在内存中创建的对象和一个引用该对象的变量。该变量不包含您的程序将使用的实际数据。相反,它拥有一个称为引用的特殊值,它将变量链接到对象。

于 2012-11-07T01:55:29.603 回答
0

原始数据类型只是数据,而对象类型称为引用类型。
这是一个有两个行为数据成员和成员函数的类。

于 2012-06-14T11:15:40.300 回答