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

作者 Werner
Schuster
 ,译者 贾晓楠 发布于
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 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 classes", :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  endend  

Rake文件负责程序运行的所有细节——要运行它,执行:

macrake  

要了解关于MacRuby的更多信息,请关注InfoQ对Laurent
Sansonetti的访谈
。 

查看原文:MacRuby
0.3 Release Brings Interface Builder Support, HotCocoa for GUI Building

时间: 2024-09-29 09:20:12

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

Intel Wireless Display 2.0 规范发布 支持蓝光、DVD

英特尔刚刚更新了其无线多媒体通信http://www.aliyun.com/zixun/aggregation/6155.html">Wireless Display 2.0 (WiDi 2.0)规范,新标准开始支持2.4GHz和5GHz频段802.11n网络下的HDCP保护内容的无线流回放,并最高支持到1080p的蓝光电影和DVD影像.声音输出可以到6声道16位48kHz,延时可以被减少到300ms,并支持ISDB-T和ISDB-电视调谐器. 不过这一切用户需要用最新的Sandy Bri

iOS 使用Interface Builder开发界面入门与技巧

引言:     通过Interface Builder(简称IB)来制作界面一直是iOS开发界饱受争议的方式.主要争议的话题是不太适合团队协作开发,再就是对IB的使用比较生疏,觉得IB只能完成一些很简单的功能.然而Interface Builder的出现并不是偶然,更是苹果一直推崇使用GUI实现技术.只是面对不同的问题,我们需要有相应的解决办法.而不是刻意抵触.    如今,Xcode的第五个版本发布,新版IDE对IB的核心文件Xib进行了一次全面的优化和升级.解决了大家一直争议的团队协作问题.

代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧

最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关系.而随着iOS开发发展至今,可以说在UI制作上大家逐渐分化为了三种主要流派:使用代码手写UI及布局:使用单个xib文件组织viewController或者view:使用StoryBoard来通过单个或很少的几个(关于这点稍后会进行展开)文件构建全部UI.应该使用哪种方式来制作UI已经是iOS开发中

Flare 3D 2.0在Flash Builder中创建一个基于Molehill 3D的项目

需要做的准备如下: 1,Flex SDK Hero 2,Flash Player 11,0,0,58 Incubator 3,playerglobal.swc 4,Flare 3D 2.0 然后按照下面的几步创建项目: 安装Flex SDK Hero 请到这里下载Hero build 19786 配置Flex SDK 将下载后的Hero(版本19786)拷贝到Flash Builder的安装目录中并命名: [Flash Builder安装目录]/sdks/4.5_incubator 到这里下载用

本文讲的是[译] jQuery 3.0 终于发布了

本文讲的是[译] jQuery 3.0 终于发布了, 从2014年10月开发到现在,jQuery 3.0终于发布了!我们的目的是创造一个更苗条.更快的jQuery版本(并且考虑到了向后兼容性).我们已经删除了旧的IE浏览器的解决方案支持并且采用了一些更现代化的 web API.它是2.x分支的延续,并且加入了几项我们认为早该加入的重大改变.虽然 1.12 和 2.2 分支在短时间内会继续收到关键的补丁,但不会有新的功能和重大更改.jQuery 3.0是jQuery的未来.如果你需要支持IE6-8

Apache Jackrabbit Oak 1.0.7 发布

Apache Jackrabbit Oak 1.0.7 发布,此版本现已提供下载.此版本是个分支版本,包括 bug 修复和系统改进,建议每位用户都升级到最新版本!更多更新内容请看发行说明. Changes in Oak 1.0.7 -------------------- Bug 修复 [OAK-1768] - DocumentNodeBuilder.setChildNode() runs OOM with large tree [OAK-2118] - Aggregation cursor i

《iOS 9 开发指南》——第6章,第6.1节Interface Builder基础

6.1 Interface Builder基础 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第6章\Interface Builder基础.mp4 通过使用Interface Builder(IB),可以快速地创建一个应用程序界面.这不仅是一个GUI绘画工具,而且还可以在不编写任何代码的情况下添加应用程序.这样不但可以减少bug,而且可以缩短开发周期,并且让整个项目更容易维护. IB向Objective-C开发者提供了包含一系列用户界面对象的工具箱,这些对象包括文本框.数据表

CYQ.Data 轻量数据层之路 V2.0 震撼惊世 支持多数据库/内置Aop(二十五)

所有文章索引:CYQ.Data 轻量数据层之路 框架开源系列 索引   前言: 从V1.5发布到现在时隔20天了,终于发布2.0版本了,2.0系列版本由于引入多数据库支持,内部结构改动较大. 但是外面调用方式仍保持一致向下兼容,因此若从原来V1.N版本升级到2.N版本,只需要轻轻更换CYQ.Data.DLL即可,界面代码不需要改变.   疑问? 最近26号才刚发布了V1.5.5,怎么才3天又发布了2.0版本?就这么点时间改动就很大,那不是很不稳定? 解疑: V1.5.5版本是拿V1.5版本的源码

Presto 0.175 发布,Facebook 大数据查询引擎

Presto 0.175 发布了,Presto 是 Facebook 开源的数据查询引擎,可对250PB以上的数据进行快速地交互式分析,查询的速度达到商业数据仓库的级别.据称该引擎的性能是 Hive 的 10 倍以上. Presto 可以查询包括 Hive.Cassandra 甚至是一些商业的数据存储产品.单个 Presto 查询可合并来自多个数据源的数据进行统一分析. 部分更新如下: 将 mongodb.connection-per-host 配置选项重命名为 mongodb.connecti