我正在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等)。
任何人都可以帮助我吗?感谢。
答案 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