个较大变化是思路方法调度器它现在完全基于Objective-C运行时MacRuby现在使用 Objective-C运行时来实现Ruby类语义并调度纯Ruby思路方法这是个非常重要变化这不仅简化了大量内核实现还让两个世界的间界限更加清晰
[..]
在纯Ruby方面修复了很多bug我们现在可以运行些RubyGems命令还可以安装简单gem但不要指望MacRuby能运行Rails!
MacRuby现在支持用Cocoa来创建GUI—— 实际上创建GUI有两种思路方法种是使用和Apple's XCode相配套Interface Builder(IB)用IB创建GUI可以通过action和outlet(GUI元件收发消息用)来连接到Ruby类MacRuby提供了 个用Ruby写工具来创建必要元数据用来映射到Ruby代码构造器例如从accessor和method映射到action和outlet
rb_nibtool是用Ruby写还使用了 Ruby 1.9Ripper库Ripper使用Ruby源让它能被Ruby代码访问——要么作为Lexer标记流要么作为s表达式(相当于ParseTree不过Ruby 1.9里还没有)rb_nibtool根据Ruby源文件为.nib文件提供类名;attr_accessor、attr_writer和其它些被解释为outlet个标识符跟个ib_action定义为个action最终这些收集到信息汇入个.nib 文件把GUI定义和Ruby代码连接起来
顺便提句:使用MacRuby和Interface Builder创建GUI是在OS X上Ruby个选择——而在Windows上Ruby In Steel IDE能帮助Visual Studio创建GUI要通过Ruby Connector使用IronRuby或MRI
另种创建GUI思路方法是HotCocoa它随MacRuby起提供可以使用创建器理念来创建GUI类似于些其它Ruby工具比如Ruby Shoes以及其它Ruby GUI库大致了解下HotCocoa实现看看创建思路方法名是如何映射到Cocoa GUIControl控件上到现在为止有关HotCocoa文档几乎没有因此唯能参考就是随MacRuby起提供HotCocoa源码和例程
和其它Ruby工具包样HotCocoa附带了个用来建立框架工具:
hotcocoa list
该命令用来创建个新连同必须库和设置HotCocoa是什么样子呢?这里有个简短举例用来列出所有加载类及其父类表格这段代码建立了个GUI——请把代码复制到HotCocoa创建框架中lib/application.rb文件中:
def start
application :name => "Classlist" do |app|
app.delegate = self
window :frame => [100, 100, 500, 500], :title => "Classlist" do |win|
# Add a button to - clicking shows the data in the table
win << button(:title => "Show es", :bezel => :regular_square).on_action {
klasses =
ObjectSpace::each_object(Class){|x|
klasses << {:klass => x.to_s, :ancestors => x.ancestors.join(',')}
}
@table.data = klasses
}
# create the table
@table = table_view(
:columns => [
column(:id => :klass, :text => "Class"),
column(:id => :ancestors, :text => "Ancestors")
] )
# put the table inside a scroll view
win << scroll_view(:layout => {:expand => [:width, :height]}) do |scroll|
scroll << @table
end
win.will_close { exit }
end
end
end
Rake文件负责运行所有细节——要运行它执行:macrake
要了解有关MacRuby更多信息请关注InfoQ对Laurent Sansonetti访谈查看原文:MacRuby 0.3 Release Brings Interface Builder Support, HotCocoa for GUI Building
最新评论