gpt4 book ai didi

objective-c - 预先绑定(bind)消息以避免方法查找

转载 作者:行者123 更新时间:2023-12-04 05:45:19 25 4
gpt4 key购买 nike

本文http://www.gnustep.org/resources/ObjCFun.html指出

Anywhere that time is critical, it's possible in Objective-C to pre-bind a message to its implementation, thus avoiding the expensive message lookup.



您如何进行此预绑定(bind)?这与选择器无关,是吗?

最佳答案

它涉及实现。考虑以下内容(如果您获得引用,则 +1 互联网):

NSArray *myReallyLongArrayOf1000items;

for (int i = 0; i < 1000; i++)
NSLog(@"%@", [myReallyLongArrayOf1000items objectAtIndex:i]);

obj-c 运行时需要时间来准确查找如何执行 -objectAtIndex:任务。因此,当我们将代码块更改为:
NSArray *myReallyLongArrayOf1000items;

id (*objectAtIndex)(NSArray *, SEL, int) = (typeof(objectAtIndex)) [myReallyLongArrayOf1000items methodForSelector:@selector(objectAtIndex:)];

for (int i = 0; i < 1000; i++)
NSLog(@"%@", objectAtIndex(myReallyLongArrayOf1000items, @selector(objectAtIndex:), i);

这使用了一个 C 函数指针,即 很多比使用 Objective-c 动态查找更快,因为它只是调用方法,并且没有额外的运行时代码。

不利的一面是,这很快使代码难以阅读,因此请谨慎使用,如果有的话。

关于objective-c - 预先绑定(bind)消息以避免方法查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757824/

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