iOS:调用Objective-C方法的处理开销是多少?

我正在写一些实时音频处理代码,它将在音频单元的渲染回调中执行.

该线程处于系统识别的最高优先级.

Apple指示最小化此调用正在进行的处理量.他们的一个建议是避免使用Objective-C方法调用.

但为什么?

调用Objective-C方法时会发生什么?什么是实际开销?

解决方法

Objective-C方法解析是动态的.在其他语言(如C或C)中,函数调用在编译时设置,实质上是跳转到包含该函数的地址.但是,在Objective-C中,方法调用实现为“发送消息”,这些消息不能以相同的方式工作.有一个查找过程而不是硬编码跳转.

此查找过程作为与定位要运行的方法的地址相关联的开销.它已经过优化,但对于某些类型的代码,开销会导致性能问题.

如果您对其他细节感兴趣,Mike Ash会给出关于Objective-C消息传递的内容great writeup.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...