1

RubyMotion アプリケーション内でこれを行っています。

Dispatch::Queue.concurrent('google').async {
  BubbleWrap::HTTP.get("http://google.com") do |response|
    p response.body.to_str
  end
}

この呼び出しは完了しません。

ただし、BubbleWrap コードを Dispatch キューの外に置くと、問題なく完了します。

4

1 に答える 1

4

BubbleWrap::HTTPは、非同期処理をRunLoopNSURLConnectionに依存する の抽象化です。残念ながら、RunLoops は GCD キューに設定されておらず、GCD キューで実行ループを開始する方法がわかりません。上記が必要になったときは、 new のインスタンス化に頼り、代わりに実行ループを手動で開始しました。NSThread

action = lambda do
  runLoop = NSRunLoop.currentRunLoop

  BW::HTTP.get("http://www.google.com") do |response|
    NSLog("Fetched Google!")
  end

  runLoop.run
end

thread = NSThread.alloc.initWithTarget action, selector:"call", object:nil
thread.start

この回答は、同じトピックCocoa In The Shellに関する私のブログ投稿の焼き直しです

于 2012-11-03T08:51:06.317 に答える