我在 Rubymotion 中执行了一个相当普通的调度队列,但它显然很早就退出了。它永远不会通过 initWithContentsOfURL 调用。但是,删除 Dispatch::Queue 包装器并将调用放在主线程中是可行的。
模拟器中的应用程序退出时没有堆栈跟踪或出现问题的指示。我是否误用了调度队列?
def foo
Dispatch::Queue.concurrent.async do
error_ptr = Pointer.new(:object)
data = NSData.alloc.initWithContentsOfURL(
NSURL.URLWithString(url), options:NSDataReadingUncached, error:error_ptr)
unless data
p error_ptr[0]
return
end
json = NSJSONSerialization.JSONObjectWithData(data, options:0, error:error_ptr)
unless json
presentError error_ptr[0]
return
end
Dispatch::Queue.main.sync { print_results(json) }
end
end
def print_results(json)
p "#{json}"
end