Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 应用程序委派-卸载视图控制器_Iphone_Uiviewcontroller - Fatal编程技术网

Iphone 应用程序委派-卸载视图控制器

Iphone 应用程序委派-卸载视图控制器,iphone,uiviewcontroller,Iphone,Uiviewcontroller,当iPhone进入睡眠状态时,我正试图从视图中卸载视图控制器。我的应用程序有一个秒表,当手机进入睡眠状态、来电或用户未注销就关闭应用程序时,秒表必须不断计数 我已经准备好了所有这些功能,我正在捕获所有的开始时间和停止时间,在重新进入秒表视图控制器时,我计算差异。一切都很好。当我做一些额外的测试时,我意识到我并没有满足iPhone进入睡眠模式的需要 因此,我需要做的就是确保秒表正确无误,将用户带回应用程序主屏幕。我知道当应用程序进入睡眠状态时会调用以下方法: -(void)applicationW

当iPhone进入睡眠状态时,我正试图从视图中卸载视图控制器。我的应用程序有一个秒表,当手机进入睡眠状态、来电或用户未注销就关闭应用程序时,秒表必须不断计数

我已经准备好了所有这些功能,我正在捕获所有的开始时间和停止时间,在重新进入秒表视图控制器时,我计算差异。一切都很好。当我做一些额外的测试时,我意识到我并没有满足iPhone进入睡眠模式的需要

因此,我需要做的就是确保秒表正确无误,将用户带回应用程序主屏幕。我知道当应用程序进入睡眠状态时会调用以下方法:

-(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,谢谢你的反馈。我已经用我实现的代码更新了上面的问题。但它似乎完全关闭了应用程序。有什么想法吗?