RubyCocoa应用程序中为NULL?

时间:2009-12-31 18:44:39

标签: ruby cocoa ruby-cocoa libffi

我正在RubyCocoa中创建一个应用程序,我有这个代码:

fileContents = OSX::NSAttributedString.alloc.initWithData_options_documentAttributes_error_(data, null, null, outError)

它给了我这个错误:

2009-12-31 19:42:54.317 Ruby Text[3791:a0f] MyDocument#readFromData_ofType_error_: OSX::OCMessageSendException: Can't get Objective-C method signature for selector 'null' of receiver #<MyDocument:0x2aaa8a class='MyDocument' id=0x2770e20>
    /Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `ocm_send'
    /Library/Frameworks/RubyCocoa.framework/Resources/ruby/osx/objc/oc_wrapper.rb:50:in `method_missing'
    /Users/myname/Documents/Ruby Text/build/Debug/Ruby Text.app/Contents/Resources/MyDocument.rb:44:in `readFromData_ofType_error_'
    /Users/myname/Documents/Ruby Text/build/Debug/Ruby Text.app/Contents/Resources/rb_main.rb:22:in `NSApplicationMain'
    /Users/myname/Documents/Ruby Text/build/Debug/Ruby Text.app/Contents/Resources/rb_main.rb:22
2009-12-31 19:42:54.320 Ruby Text[3791:a0f] HIToolbox: ignoring exception 'Can't get Objective-C method signature for selector 'null' of receiver #<MyDocument:0x2aaa8a class='MyDocument' id=0x2770e20>' that raised inside Carbon event dispatch
(
    0   CoreFoundation                      0x97b0940a __raiseError + 410
    1   libobjc.A.dylib                     0x943ff509 objc_exception_throw + 56
    2   CoreFoundation                      0x97b53a21 -[NSException raise] + 17
    3   RubyCocoa                           0x00010ddc rbobj_call_ruby + 764
    4   RubyCocoa                           0x0000dbda install_ovmix_methods + 2218
    5   libffi.dylib                        0x97bceb9f ffi_closure_SYSV_inner + 177
    6   libffi.dylib                        0x97bce9c2 ffi_closure_SYSV + 34
    7   AppKit                              0x9135aac0 -[NSDocument readFromURL:ofType:error:] + 743
    8   AppKit                              0x91247955 -[NSDocument initWithContentsOfURL:ofType:error:] + 311
    9   AppKit                              0x912474f9 -[NSDocumentController makeDocumentWithContentsOfURL:ofType:error:] + 383
    10  AppKit                              0x912472b1 -[NSDocumentController openDocumentWithContentsOfURL:display:error:] + 886
    11  AppKit                              0x912457bf -[NSDocumentController _openDocumentsWithContentsOfURLs:display:presentErrors:] + 169
    12  AppKit                              0x9135ee87 -[NSDocumentController openDocument:] + 352
    13  AppKit                              0x9103af86 -[NSApplication sendAction:to:from:] + 112
    14  AppKit                              0x9103ae39 -[NSMenuItem _corePerformAction] + 435
    15  AppKit                              0x9103ab2a -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 174
    16  AppKit                              0x9103aa16 -[NSMenu performActionForItemAtIndex:] + 65
    17  AppKit                              0x9103a9c9 -[NSMenu _internalPerformActionForItemAtIndex:] + 50
    18  AppKit                              0x9103a92f -[NSMenuItem _internalPerformActionThroughMenuIfPossible] + 97
    19  AppKit                              0x9103a873 -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 336
    20  AppKit                              0x9102ef79 NSSLMMenuEventHandler + 404
    21  HIToolbox                           0x97719e29 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1567
    22  HIToolbox                           0x977190f0 _ZL30SendEventToEventTargetInternalP14OpaqueEventRefP20OpaqueEventTargetRefP14HandlerCallRec + 411
    23  HIToolbox                           0x9773b981 SendEventToEventTarget + 52
    24  HIToolbox                           0x97767e3b _ZL18SendHICommandEventmPK9HICommandmmhPKvP20OpaqueEventTargetRefS5_PP14OpaqueEventRef + 448
    25  HIToolbox                           0x9778cb20 SendMenuCommandWithContextAndModifiers + 66
    26  HIToolbox                           0x9778cad7 SendMenuItemSelectedEvent + 121
    27  HIToolbox                           0x9778c9d3 _ZL19FinishMenuSelectionP13SelectionDataP10MenuResultS2_ + 152
    28  HIToolbox                           0x9775c212 _ZL14MenuSelectCoreP8MenuData5PointdmPP13OpaqueMenuRefPt + 440
    29  HIToolbox                           0x9775b9a9 _HandleMenuSelection2 + 465
    30  HIToolbox                           0x9775b7c7 _HandleMenuSelection + 53
    31  AppKit                              0x910284ba _NSHandleCarbonMenuEvent + 285
    32  AppKit                              0x90ffd076 _DPSNextEvent + 2304
    33  AppKit                              0x90ffc306 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 156
    34  AppKit                              0x90fbe49f -[NSApplication run] + 821
    35  AppKit                              0x90fb6535 NSApplicationMain + 574
    36  libffi.dylib                        0x97bce91d ffi_call_SYSV + 29
    37  libffi.dylib                        0x97bcec49 ffi_call + 138
    38  RubyCocoa                           0x0001c94e rb_ffi_dispatch + 2558
    39  RubyCocoa                           0x0001554c find_bs_method + 1020
    40  libruby.1.dylib                     0x00044dfa rb_rescue + 800
    41  libruby.1.dylib                     0x0004fac0 rb_proc_call + 1452
    42  libruby.1.dylib                     0x000507db rb_proc_call + 4807
    43  libruby.1.dylib                     0x0004bb0c rb_provided + 7165
    44  libruby.1.dylib                     0x0005b83d rb_eval_string + 262
    45  libruby.1.dylib                     0x0005b86e ruby_exec + 22
    46  libruby.1.dylib                     0x0005b89a ruby_run + 42
    47  RubyCocoa                           0x00012931 RBApplicationMain + 337
    48  Ruby Text                           0x00001f4d main + 47
    49  Ruby Text                           0x00001ef2 start + 54
)

我尝试了所有东西(包括nil,OSX :: NULL,OSX :: nil,null(),NULL等)。

任何人都可以帮助我吗?感谢。

1 个答案:

答案 0 :(得分:1)

在RubyCocoa中,方法将返回方法的返回值,然后返回任何双重间接参数(source):

fileContents, docAttributes, error = OSX::NSAttributedString.alloc.initWithData_options_documentAttributes_error_(data, options)

在MacRuby中,您需要创建一个指向对象的指针并将其传递给方法(source):

error = Pointer.new_with_type(‘@’)
NSFileManager.defaultManager.attributesOfItemAtPath path, error:error