前端之家收集整理的这篇文章主要介绍了
objective-c – 块和回调之间的性能差异是多少?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在雪豹中引入的阻止对象的东西之一就是以前使用回调处理的情况.语法对于传递上下文来说更为清晰.但是,我没有看到关于以这种方式使用块的
性能影响的任何信息.我应该注意什么,如果有的话,
性能陷阱应该使用块,特别是作为替代C风格的回调?
块运行时看起来很紧.块描述符和
函数是静态分配的,所以可以放大你的程序的工作集,但是你只能在存储中为你从包围范围引用的变量“支付”.非全局块
文字和__block变量构建在堆栈中,无任何分支,因此您不太可能遇到这么多的减速.
调用块只是result =(* b-> __ FuncPtr)(b,arg1,arg2);这与result =(* callback_func_ptr)(callback_ctx,arg2)相当.
如果您将块视为“编写自己的上下文结构的回调,并为您处理丑陋的包装,内存管理,转换和取消引用”,我认为您将意识到,在运行时,块是一个很小的成本,编程时间.
原文链接:https://www.f2er.com/c/112900.html