きりかノート 3冊め

おあそびプログラミング

最近のコミット

  • NSProxyおよびそのサブクラスについてメソッドの自動定義を行わない(r2286)

ちょっと影響が読み切れなかったのでリリース後に先送りしてた変更。

RubyCocoaでは、たぶんパフォーマンスのためにmethod_missingで拾ったメソッドを自動的にそのオブジェクトのクラスに登録するようになっている。ただし32bit版のみ。これはオブジェクトのクラスを指定してインスタンスメソッドを定義するんだけど、NSProxy系は対象のオブジェクトによって振る舞いがきまるので、クラスにたいしてどうこうというのは望ましくない。ということでNSProxyまたはそのサブクラスのときは、メソッド登録が適さないと考えた。

今ふと思いついたけど、NSProxyは特異メソッドにするという手はあるな。まあいいや。

この変更の副作用で、tc_subclass.rbがうまく検証できない箇所があったのがひとつ解消した。