Ticket #38 (closed defect: fixed)
Unable to use NS* constants in NSObject subclass.
| Reported by: | alloye@… | Owned by: | lsansonetti@… |
|---|---|---|---|
| Priority: | blocker | Milestone: | MacRuby 0.3 |
| Component: | MacRuby | Keywords: | |
| Cc: |
Description
In tags/0.1/r89, attempting to use an NS* constant within an NSObject subclass results in a NameError. The same constants work fine in Object subclasses as illustrated below. I believe this behavior is unexpected as subclassing NSObject is a common pattern in Cocoa. The workaround of using Object may not be obvious to someone following Objective-C examples.
[~]: macirb --simple-prompt >> framework 'Cocoa' => true >> class Foo >> def mask >> NSShiftKeyMask >> end >> end => nil >> Foo.ancestors => [Foo, Object, NSObject, Kernel] >> f = Foo.new => #<Foo:0x1841f10> >> f.mask => 131072 [~]: macirb --simple-prompt >> framework 'Cocoa' => true >> class Bar < NSObject >> def mask >> NSShiftKeyMask >> end >> end => nil >> Bar.ancestors => [Bar, NSObject, Kernel] >> b = Bar.alloc.init => #<Bar:0x18575d0> >> b.mask NameError: uninitialized constant Bar::NSShiftKeyMask from (irb):12:in `mask' from (irb):17 from /Library/Frameworks/MacRuby.framework/Versions/0.1/usr/lib/ruby/1.9.0/irb.rb:149:in `block (2 levels) in eval_input' from /Library/Frameworks/MacRuby.framework/Versions/0.1/usr/lib/ruby/1.9.0/irb.rb:262:in `signal_status' from /Library/Frameworks/MacRuby.framework/Versions/0.1/usr/lib/ruby/1.9.0/irb.rb:146:in `block in eval_input' from /Library/Frameworks/MacRuby.framework/Versions/0.1/usr/lib/ruby/1.9.0/irb.rb:145:in `eval_input' from /Library/Frameworks/MacRuby.framework/Versions/0.1/usr/lib/ruby/1.9.0/irb.rb:69:in `block in start' from /Library/Frameworks/MacRuby.framework/Versions/0.1/usr/lib/ruby/1.9.0/irb.rb:68:in `catch' from /Library/Frameworks/MacRuby.framework/Versions/0.1/usr/lib/ruby/1.9.0/irb.rb:68:in `start' from /usr/local/bin/macirb:12:in `<main>'
Change History
Note: See
TracTickets for help on using
tickets.

