NSObject:在堆还是堆栈上?

时间:2011-07-24 19:01:50

标签: objective-c cocoa-touch memory-management

Objective-C对象(例如NSString)是放在堆栈还是堆上?

3 个答案:

答案 0 :(得分:7)

Objective-C对象的指针对象存储在堆上。但有两个例外:@"foo"block literals之类的常量字符串存储在__DATA段中(对于全局变量)。

通常,ObjC对象都不会存储在堆栈中。

答案 1 :(得分:4)

它们在堆上分配。对于基本上所有的Objective-C对象来说都是如此,块是我目前唯一可以想到的例外。

答案 2 :(得分:2)

嗯,是不是所有在堆上动态分配的objective-c对象?

NSString对此规则有一个例外 - 将它们声明为@"This is a string",它们不会放在堆上。