当我使用运行时函数 sel_registerName 在 Objective-C 程序中注册大量(10000+)附加选择器时,这会减慢我的程序吗?不考虑注册这些选择器所需的时间。
最诚挚的问候, 乔亨
最佳答案
如果您正在创建一组极其病态的命名选择器,并且这些选择器恰好全部堆叠在 Objective-C 方法缓存内的选择器哈希中的一个存储桶中,那么它只会减慢您的应用程序。
不太可能。如果您发现性能问题,请使用 Instruments(或其他一些工具)对其进行测量,并在尝试优化之前确定问题所在。
虽然 rpetrich 的答案是正确的,但每个选择器的 RAM 量很小。就选择器本身而言,它只是一个地址的数据。通常不使用实际的选择器值。如果选择器由静态分配的字符串组成,则任何内容都不太可能真正接触内存(除非您的代码这样做)。
如果您动态生成选择器名称,那么分配显然会占用内存。
(当然,我非常好奇为什么要生成这么多选择器。这是一种非典型的模式!)
关于objective-c - 大量选择器是否会降低 Objective-C 程序的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098592/