原始数据类型与非原始数据类型(苹果定义的数据类型)之间有什么区别?

时间:2012-06-14 11:03:36

标签: iphone objective-c ios primitive-types nsinteger

两者之间的基本区别是什么?如果有人能够使用NSInteger和NSNumber的例子来解释那就太好了。谢谢

5 个答案:

答案 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)

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