为什么alloc方法没有显示在调用堆栈中?

时间:2015-10-09 12:16:42

标签: objective-c callstack

我想了解内存堆栈。我运行我的项目并检查堆栈如何变化,同时通过""步骤进入"。

我介入这样的事情:

myClass *tmp = [[myClass alloc] init];

然后我看到:

0-[myClass init]
1-[AppDelegate application:didFinishLaunchingWithOptions:]
...

为什么0到1之间没有[myClass alloc]? 我想这是因为alloc的实现已经关闭了吗?

2 个答案:

答案 0 :(得分:3)

myClass* tmp = [[myClass alloc] init];

相当于:

myClass* x = [myClass alloc];
myClass* tmp = [x init];

因此initalloc的结果进行操作。换句话说,当init发生时,alloc必须已经完成并返回。

答案 1 :(得分:0)

如果alloc 调用 init,那么您可以预期它会显示在堆栈跟踪中。这就是调用堆栈的工作方式。