Objective-C对象(例如NSString
)是放在堆栈还是堆上?
答案 0 :(得分:7)
Objective-C对象的指针对象存储在堆上。但有两个例外:@"foo"
和block literals之类的常量字符串存储在__DATA
段中(对于全局变量)。
通常,ObjC对象都不会存储在堆栈中。
答案 1 :(得分:4)
它们在堆上分配。对于基本上所有的Objective-C对象来说都是如此,块是我目前唯一可以想到的例外。
答案 2 :(得分:2)
嗯,是不是所有在堆上动态分配的objective-c对象?
NSString
对此规则有一个例外 - 将它们声明为@"This is a string"
,它们不会放在堆上。