我遇到了applicationShouldTerminate的问题。
我做什么接缝没有效果。任何帮助都会 赞赏。
我非常精通编程,但这让我很头疼。我要去 在一些基本的xcode教程中,因为我是mac的新手,目前我正在寻找一个简单的手电筒应用程序。
它存在,但我想在这里添加一个警告框,选项不是 退出。
(void)applicationWillTerminate:(UIApplication *)application
{
[application setIdleTimerDisabled:NO];
}
这没有效果,警报甚至在创建之前就已关闭。
(void)applicationWillTerminate:(UIApplication *)application
{
[application setIdleTimerDisabled:NO];
UIAlertView *alertTest = [[UIAlertView alloc]
initWithTitle:@"This is a Test"
message:@"This is the message contained
with a UIAlertView"
delegate:self
cancelButtonTitle:@"Button #1"
otherButtonTitles:nil];
[alertTest addButtonWithTitle:@"Button #2"];
[alertTest show];
[alertTest autorelease];
NSLog(@"Termination");
}
我在网上做了一些阅读,发现它应该可行 这个用
(NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication*)sender
但是我没有把这个声明放在哪里我得到错误:语法错误 在NSApplicationTerminateReply之前。
除了xcode似乎无法识别外,没有语法错误 NSApplicationTerminateReply作为有效输入。
非常感谢任何示例代码。
答案 0 :(得分:3)
我知道这不是一个答案,但希望我能提供帮助:
显示“真的退出?” - 输入这样的警报,即使你可以从技术上取下它(我不确定你能不能),这是一个坏主意,可能会导致App Store拒绝或者,至多是一种不一致的用户体验,因为没有其他应用程序这样做。
iPhone应用程序的惯例是在必要时保存状态,然后在用户点击主页按钮或切换应用程序时尽快控制(终止)。
为了确保一致的体验,Apple可能会设置一个积极的计时器来限制您在applicationWillTerminate
中可以执行的操作。即使他们没有采取技术措施,他们也可能有App Store批准政策,以确保申请人在被要求时立即退出。
答案 1 :(得分:2)
在iPhone上不存在applicationShouldTerminate和NSApplication。你必须使用UIApplication。
永远不会显示警报视图,因为“show”方法不会阻止,因此,在创建警报视图并尝试显示警报视图后,会立即到达“applicationWillTerminate”的结尾。我相信这是设计的。您无法在'applicationWillTerminate'中真正开始异步操作。
答案 2 :(得分:0)
我想我找到了我想要做的答案,但是当我回到家时需要检查它。 找到了一些方向here
iPhone 2.0软件最近发布了,随之而来的是 用户下载本机应用程序(即非网站)的能力 直接通过iPhone UI或iTunes中的手机。 开发人员(任何为此特权支付Apple 59GBP的人)都可以 编写自己的应用程序,并在App中购买 存储。
Apple批准的SDK的一个限制是只有一个 允许应用程序一次运行。这提出了一个 IM客户端,音乐播放器和其他程序等应用程序的问题 其功能依赖于能够在后台运行。 另一个例子(由詹姆斯提供)将是一个需要的应用程序 iPhone 3G的GPS芯片的优势在于创建了所有的日志 你去过的地方。
然而,我发现了一个巧妙的技巧:你的应用只会 如果你离开它,然后点击iPhone,就会被终止 您的应用程序位于前台时的电源按钮不计算在内 切换。结果就是你可以创建应用程序 当iPhone放在口袋里时继续运行 - 非常适合 GPS示例。
实现这一点就像在你的实现中实现两个方法一样简单
UIApplication
代表 -applicationWillResignActive:
和applicationDidBecomeActive:
。这是一个简单的演示示例 效果。在
UIApplication
委托头文件中,添加新的ivar: BOOL activeApp
。然后,在您的实现中,添加以下三个 方法:- (void)applicationWillResignActive:(UIApplication *)application { NSLog(@"resigning active status..."); activeApp = NO; [self performSelector:@selector(sayHello) withObject:nil afterDelay:1.0]; } - (void)applicationDidBecomeActive:(UIApplication *)application { NSLog(@"becoming the active app..."); activeApp = YES; } - (void)sayHello { NSLog(@"Hello!"); if (!activeApp) [self performSelector:@selector(sayHello) withObject:nil afterDelay:1.0]; }
答案 3 :(得分:0)
关于applicationShouldTerminate错误,如果有人好奇,NSApplicationTerminateReply和NSApplication似乎已被弃用......即使OP的方法正是它在文档中的显示方式!
定义您的方法,如下所示应该构建没有错误:
-(BOOL)applicationShouldTerminate :(UIApplication *)application