Io ObjcBridge
Io は ObjcBridge が最初からついてきててなかなかおもしろそう……と思いきやうまく動かなかった。
ObjcBridge autoLookupClassNamesOn
ObjcBridge debugOn
AppDelegate := Object clone do (
applicationDidFinishLaunching: := method(aNotification,
"launched" print
)
)
app := NSApplication sharedApplication
app setDelegate:(AppDelegate clone)
app runIo -> Objc (id)sharedApplication() Io -> Objc (void)setDelegate:(id) [Objc2Io respondsToSelector:"applicationWillBecomeActive:"] = 0 [Objc2Io respondsToSelector:"applicationWillResignActive:"] = 0 [Objc2Io respondsToSelector:"applicationWillFinishLaunching:"] = 0 [Objc2Io respondsToSelector:"applicationDidUpdate:"] = 0 [Objc2Io respondsToSelector:"applicationDidUnhide:"] = 0 [Objc2Io respondsToSelector:"applicationWillUnhide:"] = 0 [Objc2Io respondsToSelector:"applicationWillUpdate:"] = 0 [Objc2Io respondsToSelector:"applicationWillTerminate:"] = 0 [Objc2Io respondsToSelector:"applicationDidChangeScreenParameters:"] = 0 [Objc2Io respondsToSelector:"applicationDidBecomeActive:"] = 0 [Objc2Io respondsToSelector:"applicationDidResignActive:"] = 0 [Objc2Io respondsToSelector:"applicationDidFinishLaunching:"] = 1 [Objc2Io respondsToSelector:"applicationWillHide:"] = 0 [Objc2Io respondsToSelector:"applicationDidHide:"] = 0 [Objc2Io respondsToSelector:"validRequestorForSendType:returnType:"] = 0 Io -> Objc (void)run() [Objc2Io respondsToSelector:"application:runTest:duration:"] = 0 [Objc2Io respondsToSelector:"application:openFiles:"] = 0 [Objc2Io respondsToSelector:"application:openFile:"] = 0 Objc -> Io (void)applicationDidFinishLaunching:(id) Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x00000000 0x00000000 in ?? ()
debugOn だとブリッジのメッセージのやりとりがみれる。delegate 呼ぶときにおちてる。深く追ってない (追えない)
みてのとおり obj-c との名前の変換はない。
squareBrackets が未定義なのはこれのためってのもありそう? (実際 ObjcBridge では squareBrackets が定義されてる。けどいまいち使いかたがわからない)