Я выполняю довольно ванильную очередь отправки в Rubymotion, однако она, по-видимому, выходит рано. Он никогда не проходит через вызов initWithContentsOfURL. Однако удаление оболочки Dispatch :: Queue и выполнение вызовов в основном потоке.Rubymotion Dispatch выход изначальный
Приложение в симуляторе выходит без трассировки стека или с указанием того, что пошло не так. Я неправильно использую очередь отправки?
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
Ваш код показывает, что метод 'print_results' является встроенным в ваш вызов' Dispatch' - действительно ли он настроен таким образом или является вызовом 'Dispatch', содержащимся в другом методе? –
Это не включено. Это отдельный звонок. Отправка должна быть заключена в метод. – nathasm
Ну, тогда ваш код отлично работает для меня на RubyMotion 1.8; может быть, это проблема с конкретным URL-адресом, который вы пытаетесь загрузить? –