Я выполняю довольно ванильную очередь отправки в 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
print_results
встроен в ваш вызовDispatch
-- действительно ли он настроен таким образом или вызовDispatch
содержится в другом методе? - person Dylan Markow   schedule 30.05.2012url = "http://www.google.com"
, это не удастся. Но если я помещу строку непосредственно в вызов URLWithString, это сработает. - person nathasm   schedule 01.06.2012url
? В методеfoo
или где-то еще в вашем коде? - person Dylan Markow   schedule 01.06.2012def foo
, но доDispatch
. - person nathasm   schedule 01.06.2012