我只想弄清楚viewController是如何在一个简单的iPhone应用程序中工作的。我的问题是我试图看看下面的函数何时被调用,我已经将NSLog命令放在那里打印到控制台,但我在运行或退出我的应用程序时看不到以下任何打印,他们得到了叫,我应该看到什么吗?
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
NSLog(@"-1-");
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
NSLog(@"-2-");
self.statusText = nil;
}
- (void)dealloc {
NSLog(@"-3-");
[statusText release];
[super dealloc];
}
-1- didReceiveMemoryWarning(由Kenny指出)通过硬件工作>模拟内存警告
-2-我明白为什么这个现在不起作用,谢谢。
-3- dealloc,我正在使用底部的白色方块退出正在运行的应用程序,这是否完全退出,我应该从dealloc看到NSLog?
加里
答案 0 :(得分:1)
回答你的问题:
(void)didReceiveMemoryWarning在运行一个简单的应用程序时不会触发。 您可以通过加载一堆保留的对象(如图像)来测试它。
(void)viewDidUnload:如评论中所述,只有在您的主视图中附加了另一个视图时才会触发。
(void)dealloc:嗯,在这里你应该看到一些东西。不知道为什么。你检查了XCode控制台吗?!
答案 1 :(得分:1)
- (void)didReceiveMemoryWarning
当应用程序收到内存警告(您的应用程序内存不足)时,将被发送到视图控制器。您可以通过在模拟器中选择硬件 - >模拟内存警告来模拟它。
- (void)viewDidUnload
当控制器的视图从内存中释放时,将调用。当视图控制器需要释放其视图时,在内存不足的情况下调用它。
- (void)dealloc
释放对象后发送以释放它占用的内存。
我希望这会有所帮助。