写点什么

MacRuby 0.3 发布,支持 Interface Builder,和创建 GUI 用的 HotCocoa

2008 年 9 月 24 日

现在, MacRuby 0.3 已经可以用了。

一个较大的变化是方法调度器,它现在完全基于 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.9 的Ripper库。Ripper 使用 Ruby 源,让它能被 Ruby 代码访问——要么作为 Lexer 标记流,要么作为 s 表达式(相当于 ParseTree,不过 Ruby 1.9 里还没有)。rb_nibtool 根据 Ruby 源文件为.nib 文件提供类名;attr_accessorattr_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 GUI 控件上的。到现在为止,关于HotCocoa 的文档几乎没有,因此唯一能参考的就是随MacRuby 一起提供的HotCocoa 源码和例程。

和其它Ruby 工具包一样,HotCocoa 附带了一个用来建立程序框架的工具:

hotcocoa classlist 该命令用来创建一个新程序,连同必须的库和设置。
HotCocoa 程序是什么样子的呢?这里有一个简短的示例,用来列出所有加载的类及其父类的表格。这段代码建立了一个 GUI——请把代码复制到 HotCocoa 创建的程序框架中的lib/application.rb文件中:
def start<br></br> application :name => "Classlist" do |app|<br></br>  app.delegate = self<br></br>  window :frame => [100, 100, 500, 500], :title => "Classlist" do |win| <br></br> # Add a button to - clicking shows the data in the table<br></br> win << button(:title => "Show classes", :bezel => :regular_square).on_action { <br></br> klasses = [] <br></br> ObjectSpace::each_object(Class){|x|<br></br>  klasses << {:klass => x.to_s, :ancestors => x.ancestors.join(',')} <br></br> } <br></br> @table.data = klasses<br></br>  }<br></br>  # create the table <br></br> @table = table_view(<br></br>  :columns => [ <br></br> column(:id => :klass, :text => "Class"),<br></br>  column(:id => :ancestors, :text => "Ancestors") <br></br> ] ) <br></br> # put the table inside a scroll view <br></br> win << scroll_view(:layout => {:expand => [:width, :height]}) do |scroll| <br></br> scroll << @table <br></br> end <br></br> win.will_close { exit } <br></br> end <br></br> end<br></br>end Rake 文件负责程序运行的所有细节——要运行它,执行:
macrake 要了解关于 MacRuby 的更多信息,请关注 InfoQ 对 Laurent Sansonetti 的访谈查看原文 MacRuby 0.3 Release Brings Interface Builder Support, HotCocoa for GUI Building

2008 年 9 月 24 日 09:04436
用户头像

发布了 33 篇内容, 共 34306 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

读scss/sass实例项目带你入门

devpoint

SASS scss css预处理器

真假敏捷教练

escray

面经 面试经历 101次面试 4月日更

完美的,从不空口说白话,140个案例带你深入理解微服务

Java架构师迁哥

感谢Github帮我斩获了8家大厂Offer

Java架构师迁哥

《分布式系统设计》(2) 关键概念和基本问题

陈皓07

户外LED广告投放、商圈大屏广告优势都有什么?

󠀛Ferry

四月日更

真的香!Github一夜爆火被各大厂要求直接下架的Java面试题库也太全了

程序员小毕

Java spring 程序员 架构 面试

JVM-技术专题-MAT解析OOM问题

李浩宇/Alex

JVM

树莓派安装pytorch

Tango

四月日更

三分钟热度的你,不会得到你想要的结果

小天同学

坚持 日常感悟 4月日更 专心 个人思考

微信被单删或拉黑?这两个免打扰检测方法你要知道。

彭宏豪95

微信 工具 社交 数据备份 4月日更

余额宝|三年开发|一二三四+HR面面经,已拿offer|

Java架构师迁哥

Spring 类型转换

邱学喆

Converter spring类型转换 GenericConversionService GenericConverter ResolvableType

Java流(Stream)操作实例-筛选、映射、查找匹配

Java小咖秀

Java stream java8 日常开发

Java编辑器

ベ布小禅

四月日更

话题讨论 | 智慧城市

程序员架构进阶

话题讨论 智慧城市 28天写作 四月日更

Linux 下的Zabbix Agent 安装

耳东

Linux zabbix 4月日更

无脑用 react 的 useCallback

sadhu

React Hooks 无脑 useCallback

Python OpenCV 图像处理之图像直方图,取经之旅第 25 天

梦想橡皮擦

Python OpenCV 4月日更

用吃解决生活问题

石云升

读书笔记 好好吃饭 28天写作 4月日更

微服务中台技术解析之项目环境隔离

小江

kafka DevOps 后端开发 架构·

《分布式系统设计》(1) 从程序思维到系统思维

陈皓07

「MySQL」深入理解事务的来龙去脉

学Java关注我

Java 编程 架构 程序人生 软件架构

升级JDK到1.8笔记

风翱

jdk8 【4 月日更】

InheritableThreadLocal源码解析,子线程如何获取父线程的本地变量?

徐同学呀

ThreadLocal Java源码

升级版数字人民币试点在深启动 这次有啥不一样?

CECBC区块链专委会

数字人民币

传统金融体系vs新金融体系,区块链改变了什么?

茜茜公主

四月日更

Python模拟MOBA手游(三)

Bob

Python Python 游戏编程 四月日更

Coinbase上市在即,这里有你想知道的一切

CECBC区块链专委会

比特币

什么是跨职能合作的关键?

王辉

团队管理 技术管理 沟通

计算机原理学习笔记 Day4

穿过生命散发芬芳

计算机原理 4月日更

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

MacRuby 0.3发布,支持Interface Builder,和创建GUI用的HotCocoa-InfoQ