NSObject:在堆上还是栈上?

4
一个Objective-C对象,比如NSString,是放在栈上还是堆上?
(提示:它通常被分配在堆上,但也可能在栈上分配,具体取决于对象的生命周期和作用域。)
3个回答

7

Objective-C对象的指针存储在堆上。但有两个例外:常量字符串,如@"foo"块字面量存储在__DATA段(用于全局变量)。

通常情况下,ObjC对象都不会存储在栈上。


4

它们被分配在堆上。这对于基本上所有的Objective-C对象都是正确的,目前我能想到的唯一例外是块。


2

所有的Objective-C对象不都是在堆上动态分配的吗?

NSString有一个例外 - 声明像@"This is a string"这样的字符串时,它们不会放置在堆上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接