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 的观点,就像 CoffeeScript 和 Brython 和 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 是使用 rake
和 TestFlight 来进行调试,而 RubyMotion 官方也提供了如何调试的指南。
因为最近多了一些 iOS 的调试器,都很逆天的感觉,比如 SuperDB,所以在调试方面,可能脱离 Xcode 也不会造成很大的问题。
∞