Macos 使用未解析标识符';调度获取主队列';使用SWIFT
我在SWIFT中使用'dispatch\u get\u main\u queue()'时遇到困难,基本SDK设置为10.9。我使用的代码是一个简单的dispatch\u异步调用,如下所示:Macos 使用未解析标识符';调度获取主队列';使用SWIFT,macos,swift,Macos,Swift,我在SWIFT中使用'dispatch\u get\u main\u queue()'时遇到困难,基本SDK设置为10.9。我使用的代码是一个简单的dispatch\u异步调用,如下所示: dispatch_async(dispatch_get_main_queue()){ // Code here } 但是,它正在生成错误:使用未解析的标识符“dispatch\u get\u main\u queue”。当基本SDK设置为10.10(而不是10.9)时,它会按预期工作。我在o
dispatch_async(dispatch_get_main_queue()){
// Code here
}
但是,它正在生成错误:使用未解析的标识符“dispatch\u get\u main\u queue”。当基本SDK设置为10.10(而不是10.9)时,它会按预期工作。我在objective-c中使用它,用于使用基本SDK 10.9的非swift应用程序,但我不明白为什么它不能与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的笔记本电脑上运行良好
或者在你的应用程序中,委托可能是这样的:
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
如果视图可以为nil,则应使用可选类型:
func addSubview(view: NSView?, fillView: Bool, removeExisting: Bool) {
dispatch_async(dispatch_get_main_queue()){
if let aView = view {
if removeExisting {
...
你在哪里使用它?在您的Appdelegate或?我已经尝试在Appdelegate和我自己的自定义类(NSView的子类)中使用它。我猜在10.10 SDK中,许多定义都更新为“Swift兼容”。因此,您可能必须使用该SDK,并且只将部署版本设置为10.9。我通常会将基本SDK设置为与部署目标相同的版本,但我肯定会进一步研究这一点。我知道这可能是Swift和使用旧SDK的问题。谢谢。您好,我目前正在尝试在我制作的自定义函数中使用它,但运气不好。您是否也将基本SDK设置为10.9?我将部署目标和基本SDK都设置为10.9。是的,两者都设置为10.9。问题可能出在自定义函数中。您可以将自定义函数添加到问题中,以便我可以尝试进一步帮助您。添加!谢谢你花时间帮助我。谢谢你的建议。从现在起,我一定会这样实施。