基本数据types与非基本数据types(苹果定义数据types)有什么区别?

两者之间的基本区别是什么? 这将是很好,如果有人可以解释使用NSInteger和NSNumber的例子..谢谢

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

:是用于dynamic内存分配的内存区域。

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

关于NSInteger和NSNumber:

NSInteger不过是一个长整数的同义词,而NSNumber是一个Objective-C类,NSValue的一个子类是特定的。

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

所以,原始数据types就是数据,没有直接关系的方法。

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

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

原始数据types存储一个直接值,例如NSInteger存储一个整数值(根据编译的架构,一个32位整数或一个64位整数),对象是一个类的实例,包含方法,属性等。

为了从一个NSNumber获得一个NSInteger,你可以使用

[aNumber intValue]; 

原始数据types用于存储基本types的数据,如string,整数和实数。 所以当你声明一个值typesvariables的时候,编译器会为这个variables设置一个足够大的内存空间。 参考types的工作方式是不同的。 当您使用引用types时,您正在使用两件事情,即在内存中创build的对象和引用该对象的variables。 该variables不包含您的程序将工作的实际数据。 相反,它拥有一个称为引用的特殊值,它将variables链接到对象。

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