Objective-C运行时库使用

时间:2011-04-27 05:11:06

标签: objective-c cocoa macos runtime

使用objective-c中的运行时库可以解决哪些问题?我认为运行时库o_o

没有实际用途

2 个答案:

答案 0 :(得分:8)

征服的主要问题是使语言有效。如果没有ObjC运行时库,则没有ObjC程序可以工作。

ObjC运行时库实现向对象发送消息,从类中查找方法实现,获取类数据等。所有这些都无法在编译时完成,因此需要运行时支持。这种对运行时支持的需求催生了ObjC运行时库。

如果它与Objective-C相关,那么运行时库很可能就在它后面。

the documentation所述,

  

此共享库提供支持   对于动态属性   Objective-C语言,就是这样   与所有Objective-C相关联   应用

     

此参考主要用于   在两者之间发展桥梁层   Objective-C和其他语言,或   用于低级调试。

您可能需要查看功能列表。有些人,比如objc_msgSend,会执行您可能错误认为理所当然的行为。例如,电话:

[foo bar:4];

实际编译为:

objc_msgSend(foo, sel_getUid("bar:"), 4);

或沿着这些方向的东西。

答案 1 :(得分:4)

Zneak的回答是正确的。如果您对通过显式调用运行时可以做什么感到好奇,那就是反射(finding information about classes),修改现有类,changing method implementations等等,这些都是在程序运行时完成的。