2009-11-22 64 views
0

我有一个应用程序,当它打开时,会显示一个splash/loading屏幕。我在应用程序移动之前2.5秒钟完成了这个设置。在初始屏幕时发生崩溃,iPhone

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 

sleep(2.5); 


[window addSubview:viewController.view]; 
[window makeKeyAndVisible]; 

} 

我现在希望应用程序在启动画面一分钟暂停(有这个一个很好的理由),所以我想:

sleep(60.0); 

都可以使用。当我使用这个时,我的应用程序打开并停留在启动画面约20秒,然后退出/重新回到跳板。

任何想法为什么这种情况?

我该怎么做?

编辑//值得注意的是这两个:

sleep(15.0); 

sleep(19.0); 

工作。

sleep(20.0); 

没有。

解决方案//不要使用睡眠,使用计时器。我也跟着教程这里:

http://adeem.me/blog/2009/06/22/creating-splash-screen-tutorial-for-iphone/

非常感谢,

斯图

+0

在苹果的指导方针中没有关于不使用启动画面的内容吗? – fixmycode 2009-11-23 00:30:34

回答

5

我纯粹猜测在这里,但它可能是,因为您阻止主线程(使用睡眠而不是计时器),iPhone操作系统将其视为“无响应的应用程序”并将其杀死。

查看NSTimer。

3

如果您在控制台看,你可能会看到类似下面的...

警告:您的应用程序的名称未能及时推出

警告:强制你的应用程序名称的崩溃报告...

警告:完成崩溃报告。

基本上,因为你已经把主线程睡了太久,操作系统决定应用程序无法启动并强制应用程序退出。你最好使用一个定时器来执行延迟,以便主线程保持活动状态。

0

我建议你不同的方式实现闪屏逻辑比目前残酷的:)

或许,你可以创建一个UIView覆盖整个屏幕,触摸时或超时后,自动销毁(removeFromSuperview)? ?

0

嗯,从来没有一个很好的理由睡60s的iPhone应用程序。决不。可能你的应用程序目前的形式永远不会到达App Store! :)

+0

这不是我的应用程序的意图,我只是学习和创建这个应用程序是为了享受,实践和乐趣。感谢您的建议,但也许将来我的应用会将其发送到应用商店! – Stumf 2009-11-23 00:10:53

+0

噢,好的。祝你好运! – 2009-11-23 05:55:39

4

我同意约书亚Nozzi,该操作系统“认为”你的应用程序崩溃。

我去掉睡眠(),并做到这一点,而不是:

[window performSelector:@selector(addSubview:) withObject:viewController.view afterDelay:60.0f]; 
[window performSelector:@selector(makeKeyAndVisible) withObject:nil afterDelay:60.0f]; 
0
[NSThread sleepForTimeInterval:0.85]; 

我觉得你可以用这个方法。