gpt4 book ai didi

objective-c - Objective-C 中的类别是如何实现的?

转载 作者:太空狗 更新时间:2023-10-30 03:36:18 25 4
gpt4 key购买 nike

作为程序员,我知道如何使用类别,但我很好奇它们是如何实现的。编译器是否将它们编译成对 class_replaceMethod 的调用?来自静态初始值设定项?谢谢。

最佳答案

关于主题的新答案。

每个类都有一个方法列表,在进行方法查找时,会从头到尾扫描方法列表。如果没有找到方法,则扫描父类(super class)的列表,直到到达根类。缓存找到的方法以便下次更快地查找。

将类别加载到类时,类别方法列表添加到现有列表,并刷新缓存。由于列表是按顺序搜索的,这意味着类别方法将在下一次搜索的原始方法之前找到。

类别的设置是在第一次访问类时从静态数据中延迟完成的。如果加载带有可执行代码的包,则可以重新完成。

简而言之,它比 class_replaceMethod() 低一点。

关于objective-c - Objective-C 中的类别是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7026259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com