Objective-C の世界では、次のような単純なアラートボックスを開きたいとします。
NSAlert *alert = [[[NSAlert alloc] init] autorelease];
[alert setMessageText:@"Alert."];
[alert beginSheetModalForWindow:window
modalDelegate:self
didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:)
contextInfo:nil];
beginModalForWindow は、セレクター メソッドとして定義されています。リンゴのリファレンスガイドでは、フルネームは「beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:」です。
NSAlert.h で次のように定義されています。
- (void)beginSheetModalForWindow:(NSWindow *)window modalDelegate:(id)delegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo;
単純な質問ですが、このメソッドを ruby ffi で定義するにはどうすればよいでしょうか?
module AppKit
extend FFI::Library
# Load the Cocoa framework's binary code
ffi_lib '/System/Library/Frameworks/AppKit.framework/AppKit'
attach_function :beginSheetModalForWindow, [:pointer,:pointer,:pointer], :bool
end
次の場合に失敗します。
An exception occurred running ffi-test.rb
Function 'beginSheetModalForWindow' not found in [/System/Library/Frameworks/AppKit.framework/AppKit] (FFI::NotFoundError)