【问题标题】:Dynamically defining methods called from Objective-C with RubyMotion使用 RubyMotion 从 Objective-C 调用动态定义方法
【发布时间】:2013-11-30 14:31:30
【问题描述】:

为了将操作方法​​从应用程序委托中分离出来,我将它们移动到相关控制器中的模块中,并将这些模块包含在 AppDelegate 中。

然而,起初,我尝试在散列中定义每个控制器的操作,并使用define_method 动态创建方法。这给了我错误method '<action>:' created by attr_reader/writer or define_method cannot be called from Objective-C. Please manually define the method instead (using the 'def' keyword).

define_method 相比,包括使用RubyMotion 效率不高的模块。对于这种情况,性能并不那么重要,但是否有另一种方法可以即时创建可以从 Objective-C 调用的方法?

【问题讨论】:

  • 你能发布一些示例代码吗?
  • 您可以尝试使用带有 lambda 的哈希并调用这些 lambda。

标签: objective-c ruby macos rubymotion


【解决方案1】:

从您对问题的解释中我可以理解,您正在处理您的应用委托中的操作。从您的控制器处理此类事情或将操作放入您的视图中,然后为您的视图设置一个委托非常重要。

但是,当涉及到 RM 时,您将不得不解决无法执行此类操作的问题。

我想不出这会是做你正在尝试的事情的唯一方法。使用 Napalm 的建议是一种方法。

如果您正在为动态内容或服务器提供的内容创建大量事件,您可以只使用使用这些值的方法,而不是从它们定义方法的定义(因为 define_method 通常为所有动态内容提供非常相似的方法它定义的方法)。试试用普通的`

您可以使用许多替代解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    相关资源
    最近更新 更多