内存模型

NSString *someString = @"The string";

// 对象所占内存总是分配在堆空间中,而绝不是栈上。不能在栈中分配Objective-C对象。

// NSString stackString;// error:interface type cannot be statically allocated

NSString *anotherString = someString;// 只有一个NSString 实例,然而有两个变量指向此实例,这说明当前栈帧里分配了两块内存,每块内存的大小都能容下一个指针(32位架构--4B,64位架构--8B)。这两块内存里的值都一样,就是NSString实例的内存地址。如图:

内存模型

图1-1 此内存布局图延时了一个分配在堆中的NSString实例,有两个分配在栈上的指针