在Ruby中,我可以为任何对象定义方法:
jack = "jack"
def jack.say_hi
puts "hi, I'm #{self}"
end
jack.say_hi
Run Code Online (Sandbox Code Playgroud)
是否有可能在Objective-C中做同样的事情?怎么样?
简单回答:没有.
没有简单的方法可以将方法动态添加到类的特定实例中.如果同时删除了动态执行操作的要求以及仅针对一个实例执行此操作,则可以使用类别 - 这是一种将方法添加到现有类的编译时方法,因此也是该类的所有实例.
复杂的答案:是的.
在Objective-C中,运行时提供了一组函数来执行任何操作,您可以动态创建新类,向它们添加方法,以及动态更改实例的类.使用这些工具可以实现与Ruby代码相当的功能.Objective-C 键值观察(KVO)机制建立在这些功能之上.
以这种方式使用运行时函数是一件非常重要的事情,最好接受Objective-C和Ruby在这个领域有不同的模型,并尝试使用Objective-C语言模型重新设计你想要做的事情.但是,如果你真的想尝试这个查找"Objective-C运行时参考"并享受!
HTH
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |