Estou aprendendo Macruby, então estou construindo um aplicativo fictício para aprendê-lo. Eu queria ter um botão e quando ele é clicado, ele abre um menu. Então, olhei a documentação e encontrei o método setMenuBarVisible para a classe NSMenu, mas quando executei meu código, tive este erro:
undefined method `setMenuBarVisible' for #<NSMenu:0x400326960> (NoMethodError)
Então, iniciei o macirb para ver se esse método realmente existe.
$ macruby
> framework 'Cocoa'
> menu = NSMenu.new
> menu.methods.sort
=> [:!, :!=, :!~, :<=>, :==, :===, :=~, :Complex, :Rational, :__callee__, :__id__, :__method__, :__send__, :__type__, :clear_history!, :clone, :define_singleton_method, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :gem, :h, :h!, :hash, :history, :history!, :initialize_clone, :initialize_dup, :inspect, :instance_eval, :instance_exec, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :irb, :is_a?, :kind_of?, :method, :methods, :nil?, :object_id, :private_methods, :protected_methods, :public_method, :public_methods, :public_send, :require, :respond_to?, :respond_to_missing?, :send, :singleton_methods, :taint, :tainted?, :tap, :to_enum, :to_plist, :to_s, :to_yaml, :to_yaml_properties, :to_yaml_style, :trust, :untaint, :untrust, :untrusted?, :y, :yaml_as]
Surpreendentemente, ele retorna apenas os métodos Ruby e não os métodos Objectice-C. Pesquisei online e encontrei a maneira correta de ver todos os métodos.
> menu.methods(true, true).sort
> # I am not copying/pasting the result because it is really long :)