gpt4 book ai didi

objective-c - @selector 到底是什么?

转载 作者:太空狗 更新时间:2023-10-30 03:22:55 26 4
gpt4 key购买 nike

有些函数将@selector(methodName) 作为参数。我用 NSLog 找出什么是@selector,它返回一个整数。它看起来像一个 PID,但是当我运行 ps ax 时找不到 PID。这个整数代表什么?为什么我们必须一直使用@selector 而不是只传递方法名称?

最佳答案

@selector() 是一个编译器指令,用于将括号内的任何内容转换为 SELSEL 是一种指示方法名称的类型,但不是方法实现。 (为此你需要一个不同的类型,可能是一个 IMP 或一个 Method)在底层,一个 SEL 被实现为char*,尽管依赖这种行为并不是一个好主意。如果你想检查你有什么SEL,最好的方法是把它变成一个NSString*,像这样:

NSLog(@"the current method is: %@", NSStringFromSelector(_cmd));

(假设你知道_cmd是每个方法调用的隐藏参数之一,是当前方法对应的SEL)

Objective-C Programming Language Guide有更多关于该主题的信息。

关于objective-c - @selector 到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482344/

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