自分用のメモ。RubyMotion 3.3。
前提
- RubyMotion では Java のクラスを Ruby で継承できる
- ただ、その際はコンストラクタだけは Java で書かないとダメ
- Manuals | RubyMotion の 2.5 参照のこと
単純にコンストラクタを書く用途以外に、「現行のRubyMotionでうまく動かない箇所をJavaで書いて何とか動かす」用途としても使える(バッドノウハウ)。
落とし穴のレシピ
- コンストラクタでインスタンス変数に値を格納する
- 当然、Java の方で変数宣言する
この時、Ruby 側でも attr_accessor などを使ってインスタンス変数にアクセスするメソッドを生やすとハマる。なぜか Java の方で入れた値を Ruby 側で見ることができず、 nil になる。
解決策
attr_accessor を消せば OK