0

我有一个应用程序,打开时会显示启动/加载屏幕。在应用程序继续运行之前,我将其设置为 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/

非常感谢,

斯图

4

7 回答 7

5

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

查看 NSTimer。

于 2009-11-22T23:18:31.937 回答
4

我同意 Joshua Nozzi 的观点,操作系统“认为”您的应用程序已经崩溃。

我会删除 sleep() 并改为这样做:

[window performSelector:@selector(addSubview:) withObject:viewController.view afterDelay:60.0f];
[window performSelector:@selector(makeKeyAndVisible) withObject:nil afterDelay:60.0f];
于 2009-11-23T00:25:19.020 回答
3

如果您查看控制台,您可能会看到类似以下内容...

警告:您的应用名称未能及时启动

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

警告:已完成崩溃报告。

基本上,因为您让主线程休眠太久,操作系统决定应用程序无法启动并强制应用程序退出。您最好使用计时器进行延迟,以便主线程保持活动状态。

于 2009-11-22T23:29:34.760 回答
0
    [NSThread sleepForTimeInterval:0.85];

我想你可以使用这种方法。

于 2009-11-23T09:39:27.853 回答
0

嗯,从来没有一个很好的理由让 iPhone 应用程序休眠 60 多岁。绝不。愿您当前形式的应用永远不会进入 App Store!:)

于 2009-11-23T00:05:15.893 回答
0

看看这个博客条目,它描述了如何创建一个会淡出的启动屏幕,您应该能够设置延迟时间以使其显示日志。查看计时器的创建位置。

http://icodeblog.com/2009/03/18/iphone-game-programming-tutorial-part-3-splash-screen/

于 2009-11-23T00:10:53.173 回答
0

我建议您以不同于当前残酷的方式实现启动画面逻辑 :)

也许,您可以创建一个覆盖整个屏幕的 UIView,在触摸时或超时后,自毁(removeFromSuperview)?

于 2009-11-22T23:31:48.287 回答