gpt4 book ai didi

macos - 使用 SWIFT 无法解析的标识符 'dispatch_get_main_queue'

转载 作者:行者123 更新时间:2023-11-30 10:23:11 27 4
gpt4 key购买 nike

当基本 SDK 设置为 10.9 时,我在 SWIFT 中使用“dispatch_get_main_queue()”时遇到困难。我使用的代码是一个简单的dispatch_async调用,如下所示:

dispatch_async(dispatch_get_main_queue()){
// Code here
}

但是它生成错误:使用未解析的标识符“dispatch_get_main_queue”。当基础 SDK 设置为 10.10 时,它可以按预期工作,但在 10.9 时则不然。我在使用基本 SDK 10.9 的非 swift 应用程序的 Objective-C 中使用它,但我不明白为什么它不能与 Swift 一起使用。

我试图调查它,但目前无法找到任何关于为什么会发生这种情况以及我可以采取什么措施来解决它/实现类似功能的信息。如果有人能阐明这一点或为我指明正确的方向,我将不胜感激。

所以我的问题是:有没有办法解决这个问题(或者至少实现类似的功能)?

编辑 1 -

这是我创建的完整函数:

func addSubview(aView: NSView, fillView: Bool, removeExisting: Bool)
{
dispatch_async(dispatch_get_main_queue()){

if (aView != nil)
{
if (removeExisting)
{
for (var subview: NSView) in self.subviews() as NSView[]
{
subview.removeFromSuperview();
}
}

if (fillView)
{
aView.setAutoresizingMask(NSViewWidthSizable | NSViewHeightSizable);
aView.setFrame(NSMakeRect(0, 0, self.frame().size.width, self.frame().size.height));
}

self.addSubview(aView);
}
}
}

编辑 2 - 按照建议将“if (aView != null)”替换为“if (aView != nil)”。我不知道我是如何犯下这个菜鸟错误的!

最佳答案

在函数中使用它。这应该有效:

func test() {
dispatch_async(dispatch_get_main_queue()) {

}
}

在我的笔记本电脑上运行良好,部署目标为 10.9

或者在您的应用程序委托(delegate)中可能是这样的:

func applicationDidFinishLaunching(aNotification: NSNotification?) {
// Insert code here to initialize your application
dispatch_async(dispatch_get_main_queue()) {

}
}

首先,您应该将 if (aView != null) 替换为 if (aView != nil)Swift 使用 nil 而不是 null

关于macos - 使用 SWIFT 无法解析的标识符 'dispatch_get_main_queue',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24767722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com