我有一个应用程序,打开时会显示启动/加载屏幕。我在应用程序开始前的2.5秒处设置了此设置。
- (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 :(得分:5)
我在这里纯粹猜测,但可能是因为你正在阻止主线程(使用睡眠而不是计时器),iPhone操作系统将其视为“无响应的应用程序”并将其杀死。 / p>
查看NSTimer。
答案 1 :(得分:4)
我同意Joshua Nozzi,操作系统“认为”你的应用程序崩溃了。
我将删除sleep()并改为执行此操作:
[window performSelector:@selector(addSubview:) withObject:viewController.view afterDelay:60.0f];
[window performSelector:@selector(makeKeyAndVisible) withObject:nil afterDelay:60.0f];
答案 2 :(得分:3)
如果您查看控制台,您可能会看到以下内容......
警告:您的应用程序名称无法及时启动
警告:强制申请名称的崩溃报告......
警告:已完成崩溃报告。
基本上,因为你让主线程长时间处于休眠状态,操作系统会判断应用程序无法启动并强制应用程序退出。您最好使用计时器来执行延迟,以便主线程保持活动状态。
答案 3 :(得分:0)
我建议你实施Splash屏幕逻辑的方式不同于当前残酷的屏幕逻辑:)
或许,你可以创建一个UIView覆盖整个屏幕,触摸后或超时后,自毁(removeFromSuperview)??答案 4 :(得分:0)
答案 5 :(得分:0)
查看此博客条目,其中介绍了如何创建将淡出的启动画面,并且您应该能够设置日志显示的延迟时间。查看创建计时器的位置。
http://icodeblog.com/2009/03/18/iphone-game-programming-tutorial-part-3-splash-screen/
答案 6 :(得分:0)
[NSThread sleepForTimeInterval:0.85];
我想你可以使用这种方法。