objective-c - Cocoa App 启动闪屏

标签 objective-c macos cocoa

我的 Mac 应用程序连接到远程数据库,连接和提取数据大约需要 10 秒。由于框架初始化和网络延迟等原因,该时间无法缩短。

我想在应用程序最初启动时到应用程序准备好并完成任务时放置一个启动屏幕。

我尝试过 applicationWillFinishLaunching:(NSNotification *)notification 方法,但在应用程序启动之前它不会显示启动屏幕,这是有道理的,因为 AppDelegate 似乎是最后创建的对象,并且应用程序 Controller 在整个应用程序“完成启动”之前完全初始化,这就是延迟所在。

有什么方法可以在停靠图 block 开始弹起时立即调用此窗口吗?

我知道我会因优化而被拒绝,但无法采取进一步的措施来加快这一过程。

最佳答案

也许您可以使用 GCD 将耗时的任务异步分派(dispatch)到后台线程,以便应用程序委托(delegate)可以继续:

 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);

    dispatch_async(queue, ^{
        // time consuming task
    });

更新:

如果涉及到 UI 的更改,您可以调用dispatch_get_main_queue() 在主线程(而不是后台线程)上执行繁重的任务。

关于objective-c - Cocoa App 启动闪屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16962917/

相关文章:

objective-c - NSTextView 不会更新,除非我点击它,并且它不会聚焦。有任何想法吗?

objective-c - Mac系统状态栏焦点

ios - 更改NSMutableDictionary中NSNumber的值

iphone - 存储多个 View Controller 共有的数据

c - Xcode/lldb中查看内存分配的一种方法

iphone - 向 Objective C 类接口(interface)添加方法是可选的吗?

macos - 如何在 NSTextView 上拖动鼠标左键时检测鼠标右键按下和其他鼠标按下?

objective-c - NSComboBox 以不同颜色显示重复项目

macos - WDL-OL:找不到资源

javascript - 检测 iPhone/iPad 是否受密码保护