动态定义使用RubyMotion从Objective-C调用的方法

时间:2013-11-30 14:31:31

标签: objective-c ruby macos rubymotion

要将操作方法​​从app委托中分离出来,我将它们移动到相关控制器中的模块中,并将模块包含在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中调用即时创建方法吗?

1 个答案:

答案 0 :(得分:2)

从您对问题的解释中我可以理解,您正在处理您的应用代理中的操作。从控制器处理这类内容或将操作放在视图中,然后为视图设置委托是很重要的。

当涉及到RM时,你将不得不解决这些问题。

我想不出一个时间,这将是你正在尝试的唯一方法。使用Napalm的建议是一种方式。

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

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