Scripting Bridge
tell every application to objc_msgSend()
Jonathan ‘Wolf’ Rentzsch
http://rentzsch.com
PSIG 111
Red Shed Software
better necessarily means different
App Interoperation
• examples: “Reveal in Finder”, “Pause iTunes”
• low-level: AppleEvents; high-level: AppleScript
• Standard Cocoa application interop technique:
• Embed an AppleScript, execute via NSAppleScript
• Lame:
• Slow
• AppleScript logic separated from app (ObjC) logic
Red Shed Software
better necessarily means different
Scripting Bridge
• Scripting Dictionary -> Objective-C bridge
• Send AppleEvents by writing ObjC code
• New in 10.5 Leopold
• not to be confused with Bridge Support
• Bridge Support => XML describing all Sys APIs.
for Python+Ruby+F-Script+Nu
• “Faster” than AppleEvents (not really)
Red Shed Software
better necessarily means different
How It Works
• sdef /Applications/iTunes.app
• extracts Scripting dictionary as XML
• sdp -fh --basename iTunes
• generates iTunes.h
• ObjC 2 code: properties galore
• Add ScriptingBridge.framework to project
• Make sure project is targeting 10.5
Red Shed Software
better necessarily means different
How It Works
• #import \"iTunes.h\"
• [SBApplication applicationWithBundleIdentifier:@\"com.apple.iTunes\"];
• [app playpause];
• Slow on first message send
• parses target scripting dictionary
Red Shed Software
better necessarily means different
Demo
iTunes Playpause
Red Shed Software
better necessarily means different
0 comments
Post a comment