Objective-C对象的指针存储在堆上。但有两个例外:常量字符串,如@"foo"和块字面量存储在__DATA段(用于全局变量)。
@"foo"
__DATA
通常情况下,ObjC对象都不会存储在栈上。
它们被分配在堆上。这对于基本上所有的Objective-C对象都是正确的,目前我能想到的唯一例外是块。
所有的Objective-C对象不都是在堆上动态分配的吗?
NSString有一个例外 - 声明像@"This is a string"这样的字符串时,它们不会放置在堆上。
NSString
@"This is a string"