2

我开始学习 iPhone 编程,这显然是一个非常简单的问题。我在 xcode 3.1.4 中工作。现在,当我创建一个基于窗口的应用程序的新项目并修改 dealloc(在 AppDelegate.m 文件中)以便它实际上在控制台上发出打印语句时,我实际上看不到该语句。所以,我的问题是为什么?

为了避免明显的答案,修改后的 dealloc 是:

- (void)dealloc {
    NSLog(@"Dealloc is called");
    [window release];
    [super dealloc];
}

这很奇怪吗?

最初我在这里发布了类似的问题,但现在我知道真正的问题是我在这里描述的问题。版主,请随意删除我的其他帖子。我很抱歉。

4

3 回答 3

4

appDelegate 在应用程序结束之前不会被释放,此时在控制台上看到消息为时已晚。

此外,对于任何新项目,无论如何都应该使用 ARC,这样在很多情况下就不需要调用 dealloc。

于 2012-04-27T07:43:49.350 回答
2

可能是调用此 dealloc 时 NSLog 不可用。应用程序委托是程序完成后在项目中释放的最后一件事。

于 2012-04-27T07:43:19.613 回答
1

它没有被调用,因为那时您的应用程序可能正在运行。当它被调用时,您的应用程序可能已被终止。我同意 borrrden 的观点,即 appdelegate 的 dealloc 函数是最后被调用的。如果您想了解 retai/release、alloc/dealloc,请尝试使用 xcode 3.2.6,如果您想使用 ARC,请尝试使用 ios5 的 xcode 4.2。

于 2012-04-27T07:52:29.067 回答