通过设置NSTimer退出应用程序?

时间:2012-03-16 07:48:14

标签: objective-c nstimer freeze terminate quit

是以编程方式退出应用程序的更好方法吗?

最近我做了一个广播应用程序,其中有一个用户设置,使用NSTimer设置时间退出应用程序进程(我的意思是睡眠时间)。当时间到达应用程序应停止其进程并退出。

我使用这些语句在时间到了时退出应用程序,

  [[UIApplication sharedApplication] suspend];
  [[UIApplication sharedApplication] terminateWithSuccess];

theTimer=[NSTimer scheduledTimerWithTimeInterval:(1.0/1.0) target:self selector:@selector(countTime) userInfo:nil repeats:YES];

counter-=1;
timeLeft.text=[NSString stringWithFormat:@" %d",counter];
if (counter==0.0) {

    [theTimer invalidate];
  [[UIApplication sharedApplication] suspend];
  [[UIApplication sharedApplication] terminateWithSuccess];

是使用[[UIApplication sharedApplication] suspend]的任何问题;       [[UIApplication sharedApplication] terminateWithSuccess];方法

退出应用程序的任何其他更好的方法,或至少冻结应用程序进程.. 我需要帮助吗?

3 个答案:

答案 0 :(得分:2)

Apple不会批准任何故意暂停或终止的应用程序。您只能使用那些不包含suspendterminateWithSuccess的{​​{3}}方法。

答案 1 :(得分:0)

我总是使用exit(0)。我想如果你必须在应用程序退出之前运行代码,你应该在退出(0)之前调用它。

Apple discourages使用exit()因为从用户的角度看它看起来像是崩溃。但是他们也说没有API调用来优雅地终止你的应用程序。

如果您正在寻找一种方法来终止您的应用而无需用户回家,在睡眠时间,我认为他不会将其与崩溃混淆,因为他不会关注您的应用并退出()不会留下崩溃日志。

所以,你的选择是:

  • 忘记这一点,并在一段时间后发出哔哔声提醒他关闭应用程序。 (可怕!)
  • 使用您的私人通话关闭应用程序并冒苹果公司的拒绝风险。
  • 使用exit()关闭应用程序并坚持使用POSIX(已接受)电话。

答案 2 :(得分:0)

tanq for your replays,所以我忘了以编程方式退出我的应用程序。下一步是停止播放我的MPMoviePlayerController对象。得到了下一个级别的问题

我的sleepTime和音乐播放页面的设置页面,两者都是不同的viewControllers 所以我无法在时间设置页面中直接访问MPMoviePlayerController对象,所以我在音乐播放页面上创建了一个方法

MPMoviePlayerController *player=[[MPMoviePlayerController alloc]initWithContentURL:[NSURL URLWithString:@"http://www.radioparadise.com/musiclinks/rp_64aac.m3u"]];
[player prepareToPlay];
[player play];

- (IBAction)StopPlay:(id)sender 
{   
 [player stop];
}

所以我为音乐播放页面创建了一个对象,我从设置页面调用了这个方法。 这是我在settingsPage中的代码

@class MusicPlayingPage;
 @interface secondView : UIViewController
{
MusicPlayingPage *audio; 
}

并在settingsPage中调用方法

[audio stopPlay];

控制正确到达streamingPage,但似乎播放器没有停止播放,我无法访问任何这些播放器选项[播放器停止]; ,[玩家暂停];

musicPlayingPage

中此方法的任何问题
- (IBAction)StopPlay:(id)sender 
{   
 [player stop];
}

抱歉,如果我的问题不明白。