我想更加深入地了解任何语言中运行时需要调用的频率。在这种情况下,我特别感兴趣的是:
在任何给定的秒内在OS X或iOS系统上执行的所有函数调用(当然需要近似值)中有多少是Objective-C运行时函数(即由运行时定义的函数)?
答案 0 :(得分:2)
当然这取决于你的应用程序,但总的来说答案是“很多”。就像,一个完整的怪物。
如果你真的想看数字,我建议使用dtrace记录所有运行时函数。 This blog entry谈到如何做这样的事情。
答案 1 :(得分:1)
很多。这里只是几个例子。
每次发送消息时,实际的消息发送都是由运行时函数完成的(这实际上是几乎任何客观C程序中最常被称为运行时函数的函数)。
NSObject
类和协议不是标准库的一部分,而是运行时的一部分,因此任何最终执行到默认NSObject
实现的方法实际上都在执行运行时代码。
每次执行默认属性访问器(读或写)时,都是运行时的一部分。
如果您使用ARC,则每次访问弱引用(用于读取或写入)都是运行时函数。
Objc运行时包含C运行时,因此涉及C运行时函数的任何事情(例如,通过值传递大型结构或返回它)实际上是调用运行时。
等等。