From: Gabriele Marrone Date: 2006-11-03T09:13:49+09:00 Subject: RubyCocoa - selectors for Ruby classes Hello. I'm using the RubyCocoa framework (well, trying to), freshly compiled today (oops, yesterday) from the svn stable repository. I want my application controller to get asynchronous notifications when a file descriptor has new data to be read, so I decided to use OS X infrastructure. Here is the interesting part of the code: class Controller < OSX::NSObject addRubyMethod_withType('dataAvailable:', 'v@:@') def dataAvailable(obj) # do something end def setup_notification_observer OSX::NSNotificationCenter.defaultCenter.addObserver_selector_name_object ( self, 'dataAvailable:', "NSFileHandleDataAvailableNotification", @fileHandle ) end def setup_data_available_notification @fileHandle.waitForDataInBackgroundAndNotify end ... end Of course setup_data_available_notification and setup_notification_observer are called by awakeFromNib. Everything should be right, but when the default center tries to send my Controller a message I get logged: 2006-11-03 00:46:37.262 Fango[19411] Exception raised during posting of notification. Ignored. exception: *** -[NSProxy forwardInvocation:] called! It looks like it can find the method signature (provided by addRubyMethod_withType), but the forwardInvocation: method of the Objective-C wrapper to my ruby Controller class doesn't actually call my ruby method. In fact, this makes me suppose forwardInvocation: isn't overrided at all and the message is catched by the parent class which raises an exception, but I haven't read RubyCocoa source code so I can't be sure. I followed closely what's written here: http://www.rubycocoa.com/ appleremote/2 . I double checked Apple documentation of NSNotificationCenter, NSFileHandle. I also searched on google for other documentation about selectors and RubyCocoa, but all I could get was code with japanese comments which didn't use addRubyMethod_withType at all. I guess that code was for another version of RubyCocoa (newer, maybe? From the unstable repository?). This is what I tried: - removing addRubyMethod_withType - adding ns_override - using :dataAvailable_, :dataAvailable, 'dataAvailable' instead of 'dataAvailable:' - defining the method dataAvailable_ instead of dataAvailable - something else I can't remember :P Most of which I didn't expect to actually work, but decided to try anyway. Some bugs just make you paranoid. I'm using Mac OS X 10.4.8 (PPC), XCode 2.4. Any ideas? :) Thanks in advance!