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

Iphone 基本数据类型与非基本数据类型(苹果定义的数据类型)之间有什么区别?,iphone,objective-c,ios,primitive-types,nsinteger,Iphone,Objective C,Ios,Primitive Types,Nsinteger,这两者的基本区别是什么。。?如果有人能用NSInteger和NSNumber的例子来解释,那就太好了。。感谢主要区别在于它们在内存中的位置,对象存储在堆中,而值类型直接存储在堆栈中 堆:用于动态内存分配的内存区域 堆栈:为函数中的自动变量分配的内存部分。数据使用后进先出(LIFO)方法存储在堆栈中 关于NSInteger和NSNumber: NSInteger只不过是长整数的同义词,而NSNumber是Objective-C类,具体来说是NSValue的一个子类 基本数据类型存储一个直接值,例如

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

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

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

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

关于NSInteger和NSNumber:


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

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

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

[aNumber intValue];

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

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

对象类似于模块,包括数据和函数(此处为方法)

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

基本数据类型只是一个数据,而对象类型称为引用类型。

它是一个具有两个行为数据成员和成员函数的类。

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

这不是主要区别,在某些情况下根本不正确。。NSInteger*i=malloc(sizeof(NSInteger));NSString*constString=@“constString”;-与您所说的完全相反。当然,您可以强制值类型保留在堆上,但这不是默认行为。。。在您的示例中,您手动分配内存并声明指向NSInteger的指针,您没有使用值类型,但访问内存地址的指针…1)内存类型仍然不是对象和普通旧数据类型的主要区别。2)在许多语言中,例如C++对象可以在堆栈中分配。这是默认的行为。3) 在某些情况下,Objective-C对象可以在堆栈中分配。这不是一个特别有用的区别。一个原语类型的ivar将与保存它的对象一起位于堆上。