Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.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_Objective C_Cocoa Touch - Fatal编程技术网

Iphone 检测我的应用程序是否被杀

Iphone 检测我的应用程序是否被杀,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我已经构建了一个连接到sqlite数据库的简单应用程序,该应用程序使用故事板作为UI。第一次,它将抛出一个登录视图。如果身份验证成功,我会将sqlite数据库中的状态更改为1。默认情况下,它是0。登录后,我可以使用该应用程序 例如,如果我杀死应用程序,我如何知道我的应用程序已被杀死?我需要将状态再次更改为默认状态。因此,每当我再次点击应用程序时,我必须再次登录 你知道怎么做吗?谢谢 编辑 使用委托方法 例如: 您可以在中执行关闭操作 - (void)applicationWillTerminat

我已经构建了一个连接到sqlite数据库的简单应用程序,该应用程序使用故事板作为UI。第一次,它将抛出一个登录视图。如果身份验证成功,我会将sqlite数据库中的状态更改为1。默认情况下,它是0。登录后,我可以使用该应用程序

例如,如果我杀死应用程序,我如何知道我的应用程序已被杀死?我需要将状态再次更改为默认状态。因此,每当我再次点击应用程序时,我必须再次登录

你知道怎么做吗?谢谢

编辑

使用委托方法 例如:


您可以在中执行关闭操作

- (void)applicationWillTerminate:(UIApplication *)application
{
    // Log out?
}
如果你的应用程序没有死机,只是挂起了,比如在来电时,你也可以这样做

- (void)applicationWillResignActive:(UIApplication *)application
{
    // Log out?
}
或者

或者,在简历上

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    // Log in?
}
或者


应用程序委托实现了几个方法,用于处理应用程序中的状态更改。从UIApplication.h头

- (void)applicationDidFinishLaunching:(UIApplication *)application;
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(6_0);
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary  *)launchOptions NS_AVAILABLE_IOS(3_0);
- (void)applicationDidBecomeActive:(UIApplication *)application;
- (void)applicationWillResignActive:(UIApplication *)application;
- (void)applicationWillTerminate:(UIApplication *)application;

您可以实现任何相关的方法,在这种情况下,
应用程序将终止
方法以更改状态。或者,始终在
ApplicationIDBecomeActive
中弹出登录视图。(但是,这并不能解决更新数据库的问题。如果数据库是本地的,则没有问题,只需在辞职或终止之前更改数据库即可。这里的挑战是,如果您的数据库位于服务器上。虽然这可能是个问题,但我可以看到连接超时会影响远程值的完整性。)

这些方法会在应用程序委托中自动添加到项目中,可以在AppDelegate.h和AppDelegate.m文件中找到


要获得完整的解释,请查看。

您无法检测您的应用程序是否已被终止,因为您的应用程序的进程被系统终止,并且不会调用任何代码来通知您的应用程序它已被终止

您要做的是在中设置一些布尔值:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
因为如果在应用程序被终止后重新启动应用程序,则会调用此函数


对于其他州,请参见

您好,谢谢您的回答。。但我用的是ARC。。我怎么处理这笔交易?谢谢。
dealloc
方法是在UIViewController中实现的,所以在所有情况下,当你的应用程序关闭时,它都不会被捕获。@woz你在说什么
-dealloc
在某个点或另一个点为所有对象调用,只要引用计数达到零。您的
AppDelegate
在这方面并不特殊,将调用dealloc,唯一的问题是,.@RichardJ.rossii
dealloc
方法显然不是处理此问题的方法。@RichardJ.rossii如果将其作为任何UIViewController的方法实现,则不会始终调用它。我是第一个发布这个问题正确答案的人,但你不会放过它。我将删除我的答案,您可以发布自己的答案供我挑剔,因为您对iOS了如指掌。
应用程序将终止:
在启用多任务时(默认情况下)将永远不会被调用。@omz-即使用户通过多任务托盘手动终止应用程序,也是这样吗?是,在这种情况下,应用程序就被终止了。@Moshe-是的。。我想知道用户是否手动终止应用程序。这是否也在使用applicationWillTerminate?谢谢。不,根据@omz,您希望实现applicationWillResignActive。(无效)applicationWillTerminate:(UIApplication*)application->如果我正确终止应用程序,我会使用此选项?我的情况是用户手动终止应用程序。:)我试过了。但我从不把应用程序称为willterminante。有什么想法吗?
- (void)applicationWillEnterForeground:(UIApplication *)application
{
    // Log in?
}
- (void)applicationDidFinishLaunching:(UIApplication *)application;
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(6_0);
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary  *)launchOptions NS_AVAILABLE_IOS(3_0);
- (void)applicationDidBecomeActive:(UIApplication *)application;
- (void)applicationWillResignActive:(UIApplication *)application;
- (void)applicationWillTerminate:(UIApplication *)application;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions