多年过去了,我在想是否值得投资一些时间学习MacRuby,甚至学习Python来使用PyObjC。尽管我喜欢Objective-C,但我记得当Ruby桥接器没有崩溃时,我比较容易提高生产力。我只是不希望再次投资时间最终得到崩溃的软件。
多年过去了,我在想是否值得投资一些时间学习MacRuby,甚至学习Python来使用PyObjC。尽管我喜欢Objective-C,但我记得当Ruby桥接器没有崩溃时,我比较容易提高生产力。我只是不希望再次投资时间最终得到崩溃的软件。
如果您想尝试其中一种桥接技术,我会建议使用MacRuby。该技术是由Laurent Sansonetti开发的,他是苹果公司的高级软件工程师,正在致力于Ruby开发。
现在它已经非常实用,并且与本地框架完美结合。值得一看,特别是您已经有了Ruby编程经验。
如果你想学习Cocoa编程,请忽略桥接。它们只会使编写Cocoa应用程序更加困难,而且你将浪费大量时间来适应。
具体来说,你需要学习Objective-C才能理解系统框架的API和设计模式。此外,所有文档和工具都是专门为支持Objective-C而编写的。
在学习Cocoa编程中,你将花费大部分时间在上述API和设计模式上;相比之下,实际语言部分相对较小。
还要注意,桥接必然会引起阻抗不匹配,试图将不完全相同的功能从一种语言映射到另一种语言。
坦白地说,如果你知道Ruby,那么Objective-C应该非常容易;对象模型非常相似。
我的个人意见是在Mac本地应用程序中使用ObjC。
在不可靠的接口和支持有问题的情况下,使用Ruby/Python在它们本来就能良好工作的地方。
以下是为什么这不是浪费时间的原因。在某些情况下,Ruby和Python拥有非常棒且完善的库,在Objective-C中不可用,也不太可能出现。 这是最佳的使用案例之一。
例如:您不想在Objective-C中重新实现Rails(有些人可能会),但您可以轻松地使用它,其中的部分来为MacRuby提供动力。
好吧,MacRuby已经死了。还有商业版的RubyMotion。
仍然有PyObjc、RubyCocoa和mruby。
另一个有趣的用例是提供脚本功能,而不像AppleScript和OSA那样糟糕。
有合理的理由。