我开始学习iPhone编程,这显然是一个非常简单的问题。我在xcode 3.1.4工作。现在,当我创建一个基于窗口的应用程序的新项目并修改dealloc(在AppDelegate.m文件中)以便它实际上在控制台上创建一个print语句时,我实际上可以不看到声明。那么,我的问题是为什么?
因此,我可以避免明显的答案,修改后的dealloc是:
- (void)dealloc {
NSLog(@"Dealloc is called");
[window release];
[super dealloc];
}
这是不是很奇怪?
最初我发布了类似的问题here,但现在我知道真正的问题是我在这里描述的问题。版主,随时删除我的其他帖子。我很抱歉。
答案 0 :(得分:4)
在应用程序结束之前,appDelegate不会被释放,此时在控制台上看到消息为时已晚。
此外,对于任何新项目,您都应该使用ARC,这样就无需在很多情况下调用dealloc。
答案 1 :(得分:2)
调用此dealloc时可能无法使用NSLog。当程序完成时,App委托是项目中最后一个被释放的东西。
答案 2 :(得分:1)
它没有被调用,因为那时你的应用程序可能正在运行。当它被调用时,您的应用程序可能已被终止。我同意borrrden的观点,即appdelegate的dealloc函数是最后一个被调用的东西。如果你想了解retai / release,alloc / dealloc,请尝试使用xcode 3.2.6,如果你想使用ARC,请尝试xos 4.2和ios5。