两者之间的基本区别是什么..?如果有人可以使用 NSInteger 和 NSNumber 的示例进行解释,那就太好了。谢谢
5 回答
主要区别在于它们在内存中的位置,对象存储在堆中,而值类型直接存储在堆栈中......
heap:是用于动态内存分配的内存区域。
stack:是为函数内的自动变量分配的内存部分。数据使用后进先出 (LIFO) 方法存储在堆栈中。
关于 NSInteger 和 NSNumber :
NSInteger 只不过是长整数的同义词,而 NSNumber 是一个 Objective-C 类,具体来说是 NSValue 的子类。
对象是:成员数据+对数据进行操作的函数
所以,原始数据类型只是数据,没有直接相关的方法。
对象就像一个模块,包括数据和功能(方法在这里)。
NSInteger 是原始数据类型。NSNumber 是对象,它的成员数据可能是 NSInteger。
原始数据类型存储直接值,例如 NSInteger 存储整数值(32 位整数或 64 位整数,具体取决于编译的架构),对象是类的实例,具有方法、属性等。
为了从 NSNumber 中获取 NSInteger,您可以使用
[aNumber intValue];
原始数据类型用于存储基本类型的数据,例如字符串、整数和实数。因此,当您声明一个值类型变量时,编译器会留出或分配一块足够大的内存用于该变量。引用类型的工作方式不同。当您使用引用类型时,您将使用两件事,一个在内存中创建的对象和一个引用该对象的变量。该变量不包含您的程序将使用的实际数据。相反,它拥有一个称为引用的特殊值,它将变量链接到对象。
原始数据类型只是数据,而对象类型称为引用类型。
这是一个有两个行为数据成员和成员函数的类。