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