[MacRuby-devel] [MacRuby] #374: Adding a binding (in IB) prevents instance variables

MacRuby ruby-noreply at macosforge.org
Fri Oct 9 12:43:01 PDT 2009


#374: Adding a binding (in IB) prevents instance variables
-------------------------------------+--------------------------------------
 Reporter:  parzival@…               |       Owner:  lsansonetti@…        
     Type:  defect                   |      Status:  new                  
 Priority:  major                    |   Milestone:                       
Component:  MacRuby                  |    Keywords:                       
-------------------------------------+--------------------------------------
 I've got a (MacRuby) subclass of NSWindowController.  If a binding is
 added using Interface Builder, it becomes impossible to have any instance
 variables in my subclass.  What's kind of strange, too, is that removing
 the binding doesn't fix it; so far it seems necessary to delete the object
 in IB and then re-create it.

 I'm using r2771, on a MBP(2007) running 10.6.1.  This was working at some
 point in 0.4, but I think it's been broken for at least a couple weeks or
 more.

 Here's some code in my class to demonstrate.  This gets called in
 awakeFromNib, though I tried adding an instance variable in initWithWindow
 and it came back nil as well :

 {{{
 testSPC = SourcePaneController.new
 puts "testSPC:"
 p testSPC
 @testSPC_iv = SourcePaneController.new
 puts "@testSPC_iv:"
 p @testSPC_iv

 testInt = 3
 puts "testInt:"
 p testInt
 @testInt_iv = 5
 puts "@testInt_iv:"
 p @testInt

 puts "Instance variables are :"
 p self.instance_variables
 }}}




 And the output:
 {{{
 in MainWinController.initWithWindow
 in SourcePaneController.init
 testSPC:
 #<SourcePaneController:0x2003df0a0>
 in SourcePaneController.init
 @testSPC_iv:
 nil
 testInt:
 3
 @testInt_iv:
 nil
 Instance variables are :
 []
 }}}

 As can be seen, the calls to my other class's initializer are working, but
 it's not getting assigned to the instance variable.
 A potentially revealing error occurred when I mistyped one of my test
 variable names.  This is what happens after ' @testSPC_iv = nothing'
 (where 'nothing' is an unassigned variable) :

 {{{
 2009-10-09 12:22:01.975 resynch[1015:a0f] +[MainWinController
 _getValue:forKey:]: unrecognized selector sent to class 0x200238940
 2009-10-09 12:22:01.978 resynch[1015:a0f] +[MainWinController
 _getValue:forKey:]: unrecognized selector sent to class 0x200238940
 2009-10-09 12:22:01.979 resynch[1015:a0f] An uncaught exception was raised
 2009-10-09 12:22:01.979 resynch[1015:a0f] +[MainWinController
 _getValue:forKey:]: unrecognized selector sent to class 0x200238940
 2009-10-09 12:22:01.981 resynch[1015:a0f] *** Terminating app due to
 uncaught exception 'NSInvalidArgumentException', reason:
 '+[MainWinController _getValue:forKey:]: unrecognized selector sent to
 class 0x200238940'
 *** Call stack at first throw:
 (
         0   CoreFoundation                      0x00007fff83dbf5a4
 __exceptionPreprocess + 180
         1   libobjc.A.dylib                     0x00007fff87c7c313
 objc_exception_throw + 45
         2   CoreFoundation                      0x00007fff83e18330
 __CFFullMethodName + 0
         3   CoreFoundation                      0x00007fff83d9230f
 ___forwarding___ + 751
         4   CoreFoundation                      0x00007fff83d8e458
 _CF_forwarding_prep_0 + 232
         5   CoreFoundation                      0x00007fff83d53ffd
 CFDictionaryGetValueIfPresent + 93
         6   libmacruby.dylib                    0x000000010010b4ee
 classname + 126
         7   libmacruby.dylib                    0x000000010010b728
 rb_class_path + 24
         8   libmacruby.dylib                    0x000000010010ba3e
 rb_obj_classname + 46
         9   libmacruby.dylib                    0x000000010006f89f
 rb_any_to_string + 15
         10  libmacruby.dylib                    0x000000010015f697
 rb_vm_call_with_cache2 + 4663
         11  libmacruby.dylib                    0x0000000100121199
 rb_funcall + 425
         12  libmacruby.dylib                    0x000000010015f697
 rb_vm_call_with_cache2 + 4663
         13  libmacruby.dylib                    0x0000000100121199
 rb_funcall + 425
         14  libmacruby.dylib                    0x000000010006a8f6
 rb_inspect + 22
         15  libmacruby.dylib                    0x000000010003e2a1
 name_err_mesg_to_str + 161
         16  libmacruby.dylib                    0x0000000100162d6f
 rb_vm_call + 4783
         17  libmacruby.dylib                    0x0000000100070df9
 rb_convert_type + 121
         18  libmacruby.dylib                    0x00000001000f010b
 rb_string_value + 107
         19  libmacruby.dylib                    0x000000010003c62e
 name_err_to_s + 78
         20  libmacruby.dylib                    0x000000010015f697
 rb_vm_call_with_cache2 + 4663
         21  libmacruby.dylib                    0x0000000100121199
 rb_funcall + 425
         22  libmacruby.dylib                    0x0000000100162d6f
 rb_vm_call + 4783
         23  libmacruby.dylib                    0x0000000100175e23
 rb_vm_print_current_exception + 99
         24  libmacruby.dylib                    0x0000000100176108
 macruby_main + 392
         25  resynch                             0x0000000100000e3e main +
 40
         26  resynch                             0x0000000100000ad8 start +
 52
         27  ???                                 0x0000000000000001 0x0 + 1
 )
 terminate called after throwing an instance of 'NSException'
 Program received signal:  “SIGABRT”.
 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/374>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list