RubyCocoa 今日のコミット 2015-06-12
新しいOS Xのbetaが出たので検証中、っていうかSEGVしてテスト走らないじゃん。。
だいたいこういうレベルでおかしいときは、コンパイル時に警告出てたりするものなので確認。
In file included from /Users/kimuraw/proj/rubycocoa/framework/src/objc/OverrideMixin.m:13: In file included from /Users/kimuraw/proj/rubycocoa/framework/src/objc/OverrideMixin.h:10: In file included from /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/objc/objc-class.h:1: /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/objc/runtime.h:56:11: note: 'isa' has been explicitly marked deprecated here Class isa OBJC_ISA_AVAILABILITY; ^ /Users/kimuraw/proj/rubycocoa/framework/src/objc/OverrideMixin.m:492:22: warning: 'isa' is deprecated [-Wdeprecated-declarations] class_addMethod(c->isa, @selector(alloc), (IMP)imp_c_alloc, "@4@4:8"); ^
たぶんこれだね。クラッシュレポートもinit_ovmix() -> class_addMethod()のあたりで落ちてるし。クラスのメタクラスを取るのにisa直接見てるけど、だいぶ前にdeprecateされた方法。
objcでメタクラスを取る方法は
- objc_getMetaClass()にクラス名を渡す。
- object_getClass()にクラス(Class)を渡す。(ふつうのオブジェクトを渡すとそのクラスが得られる)
のどちらかで、今回はClassはもう用意してあるので後者のほうがよいね。ということで直した。
まあまだOS X 10.11上でぜんぶのテストは通らないんだけどね!
あとテスト流すと次のようなメッセージがでるので対処しといた。outletへのsetterがないから繋げないぜ、とのこと。
2015-06-12 01:51:36.174 ruby2.2[1285:2455542] Failed to connect (tableView2) outlet from (TableViewNibOwner) to (NSScrollView): missing setter or instance variable
単に警告の出てたoutletに対してib_outletで宣言するようにした。
- テスト時の"Failed to connect..."が出ないように。(c8fa6b2