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