【问题标题】:What's the deal with file load/compile order in RubyMotion?RubyMotion 中的文件加载/编译顺序是怎么回事?
【发布时间】:2012-06-23 03:22:42
【问题描述】:

我正在将现有的 iOS 应用程序从 Objective-C 转换为 RubyMotion。

我遇到的第一个主要缺陷是 AppDelegate 类引用了应用程序中定义的其他类。

由于这些是在 AppDelegate 类之后编译的,因此会引发异常:

2012-06-20 13:38:03.088 myApp[3349:f803] *** Terminating app due to uncaught exception 'NameError', reason: 'uninitialized constant AppDelegate::User (NameError)

我可以通过在我的 Rakefile 中明确说明 User 类应该在 AppDelegate 类之前编译来解决这个问题,但是当您处理一个包含 30 多个类的应用程序时,这几乎不是最佳解决方案,其中许多类引用每个其他。

在 RubyMotion 中有没有更好的方法来解决这个问题?

【问题讨论】:

    标签: rubymotion


    【解决方案1】:

    我同意,一旦你有很多类,使用 app.files_dependencies 方法可能会很麻烦。

    在我的应用程序中,我更改了 app.files 参数,将其重新排序以将我最重要的事情放在首位(在我的例子中,我添加了 lib/ 文件夹):

    app.files = (app.files.select { |f| f =~ /app\/lib/ } + app.files).uniq
    

    【讨论】:

    • 是的——我也是这么想的。希望这将在未来的版本中得到解决:/
    • 一个警告:某些第 3 方库可能会阻止它工作(具体而言,bubble-wrap gem 会在您在 Rakefile 中更改加载路径之后重新排序加载路径)。
    • 赋值应该是 app.files = 而不是 += 否则我们只是用原始加载顺序附加到现有数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多