→ Why I loved building Basecamp for iPhone in RubyMotion

37signals 在最近发布 Basecamp for iPhone,由于 37signals 是 Ruby 的坚定支持者,所以该 app 是由 RubyMotion 打造的,甚至开发工具也跳过了 Xcode。

在上架不久后,Nick 发了一篇文章来说明他们是为什么选择和怎样使用 RubyMotion 打造这款应用。

学习成本和 IDE 的缺陷

Nick 对使用 Objective-C 开发应用的看法时:「如果使用 Objective-C,就意味着我需要抛弃我现有的工具和工作流,然后学习新的 API、框架和更多的东西(如 IDE)」,并且提到他早年使用 Visual Basic 控件和 Visual Studio 时的不好经验,因此非常抗拒使用 Xcode 和 Interface Builder。

我相当同意 Nick 的观点,就像 CoffeeScriptBrython 和 JavaScript 的关系,对于 Ruby 或 Python 程序员来说,直接用前两者会少很多学习成本。

而 Xcode,说实话,稳定性还没 Visual Studio 好,在代码补全、文档、Interface Builder、应用发布等方面虽然会比一般编辑器要好,所以还能忍受缺陷,但如果有代替方案呢?

Auto Layout

Auto Layout 是 iOS 6 新加的 API,为马脸 iPhone 5 准备的:

# horizontal
"|-10-[switchButton]-10-|" 
"|-10-[helpButton]-10-|" 

# vertical
"|-15-[switchButton]-10-[helpButton(==switchButton)]-15-|"

第三方框架和类库

Nick 吐槽了 Objective-C 第三方框架和类库令人不满的现状:

  • (相对于 Ruby)没有令人满意的依赖管理工具,CocoaPods 做得很好,可是还不够
  • 大部分不在 CocoaPods 的框架或类库的 README 只是简单地使用「拖曳 .xcodeproj 文件到 Xcode」或「拖曳 .h.m 文件到你的项目」等等让人头痛的说明(谁叫你不用 Xcode :P)

CocoaPods 我也有在用,虽然它让使用第三方框架和类库变得简单了一些,但并不是很完美,如果能像 RubyGems 或 Node Packaged Modules 那样的话,就真的真的 save my ass 了。

调试

37signals 是使用 rakeTestFlight 来进行调试,而 RubyMotion 官方也提供了如何调试的指南

因为最近多了一些 iOS 的调试器,都很逆天的感觉,比如 SuperDB,所以在调试方面,可能脱离 Xcode 也不会造成很大的问题。