创建iOS程序时,如果我传递SEL(@selectors)并在其他类中调用它们会有任何性能影响吗?这比正常的方法调用要慢得多吗?
答案 0 :(得分:2)
为什么来自其他类的消息传递(ObjC闻名的一件事)的性能会受到影响?当然,与C函数相比,存在一些开销(这要归功于在方法中增加了两个部分)。选择器只是数据类型,因此将它们传递给SEL类型并不比发送BOOL或int更昂贵。但是,要从传递的选择器实际调用SEL类型,建议创建NSInvocation对象,这会略微增加开销时间。
你在objC中或多或少安全,因为消息为nil(你确实提到过其他类),产生nil。
答案 1 :(得分:0)
除了第一次运行之外它可能没什么影响,因为编译器在编译时创建了对每个对象及其依赖性以及类的引用,因此在加载时可能会有点慢(在非常大的程序中也是如此..)但之后并没有多少提供不是很大的对象是在中间步骤中创建的,它也不涉及任何大的动态操作,因为这里我只谈论调用本地函数并从另一个类调用相同的函数
无论如何,你为什么要使用selector来引用另一个类中的某个函数。
答案 2 :(得分:0)
根据我的有限知识,选择器只是方法名称的编码。鉴于在通过向对象发送消息来调用objective-c方法,我不明白为什么显式方法调用([object method]
)和隐式调用([objectDelegate selector]
)之间应该存在性能差异。