Iphone 应用程序委派-卸载视图控制器
当iPhone进入睡眠状态时,我正试图从视图中卸载视图控制器。我的应用程序有一个秒表,当手机进入睡眠状态、来电或用户未注销就关闭应用程序时,秒表必须不断计数 我已经准备好了所有这些功能,我正在捕获所有的开始时间和停止时间,在重新进入秒表视图控制器时,我计算差异。一切都很好。当我做一些额外的测试时,我意识到我并没有满足iPhone进入睡眠模式的需要 因此,我需要做的就是确保秒表正确无误,将用户带回应用程序主屏幕。我知道当应用程序进入睡眠状态时会调用以下方法:Iphone 应用程序委派-卸载视图控制器,iphone,uiviewcontroller,Iphone,Uiviewcontroller,当iPhone进入睡眠状态时,我正试图从视图中卸载视图控制器。我的应用程序有一个秒表,当手机进入睡眠状态、来电或用户未注销就关闭应用程序时,秒表必须不断计数 我已经准备好了所有这些功能,我正在捕获所有的开始时间和停止时间,在重新进入秒表视图控制器时,我计算差异。一切都很好。当我做一些额外的测试时,我意识到我并没有满足iPhone进入睡眠模式的需要 因此,我需要做的就是确保秒表正确无误,将用户带回应用程序主屏幕。我知道当应用程序进入睡眠状态时会调用以下方法: -(void)applicationW
-(void)applicationWillResignActive:(UIApplication *)application
如何从我的应用程序代理卸载秒表视图控制器
----更新---
kpower,感谢您的反馈。我已经实现了以下代码: 在我的应用程序代理中:
- (void)applicationWillResignActive:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"AppIsAsleep" object:nil];
}
在我的视图控制器中,我有以下内容:
-(void)viewDidLoad
{
// Add Observer.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewDidUnload:) name:@"AppIsAsleep" object:nil];
}
- (void)viewDidUnload {
//Remove the Observer.
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"AppIsAsleep" object:nil];
}
当手机进入睡眠状态时,它实际上会关闭应用程序,我是否做错了什么
问候,,
Stephen您可以使用通知机制。在这种情况下,它允许您从不同的位置(而不是AppDelegate)卸载视图控制器 例如,在视图控制器的
viewDidLoad
方法中,您添加了一个观察者(不要忘记在viewDidUnload
中删除它),而在AppDelegate的应用程序willresignactive:
方法中,您只需发布通知即可。就这些
↓更新此处↓强>
当您收到通知时,您应该自己管理视图控制器的删除。在此处调用viewDidUnload
不是解决方案,因为此方法是在视图控制器已卸载后调用的,不会导致删除
如何删除?取决于视图控制器的添加方式(例如,UINavigationController的
popViewControllerAnimated
)。这里的主要思想是使对象的保留计数等于0(正如您所知道的,在这种情况下,对象将被销毁)-因此您应该发送释放消息必要的次数。卸载视图控制器的含义不太清楚。请详细说明。你想删除视图吗?kpower,谢谢你的反馈。我已经用我实现的代码更新了上面的问题。但它似乎完全关闭了应用程序。有什么想法吗?