LoginSignup
7
7

More than 5 years have passed since last update.

MacRuby/RubymotionでObjective-Cのblocksにメソッドを渡す方法

Last updated at Posted at 2012-07-27

以下のようなコードをMacRuby/MotionRubyで呼び出す方法についてのメモです。

- void hoge(int num, void (^block)(char *str))
{
  /* blocksを利用した何らかの処理 */
}

一つはProc.newを利用した呼び出しです。

hoge(1, Proc.new{|str| ... })

ただProcオブジェクトが長くなるとしつこい書き方になってしまうので、メソッドに切り分けることもできます。Methodオブジェクトからto_procでProcオブジェクトに変換するやり方です。

def foo
  hoge(1, method(:bar).to_proc)
end

def bar(str)
  # ...
end

大体は素直にProc.newで書くのが良いと思いますが、通信に成功した場合と失敗した場合とでそれぞれクロージャを書くときはコードが長くなりがちなので、メソッド化するなどして、できるだけリーダブルに保ちたいものです。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7