【发布时间】:2015-02-18 10:37:53
【问题描述】:
我发现SEL 类型有下一个定义:
typedef struct objc_selector *SEL;
但我找不到objc_selector 是如何实现的。
好的,如果我们有下一个代码
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
SEL mySelector = NSSelectorFromString(@"mySelector");
return 0;
}
,那么mySelector 只是一个指针。在它包含的地址之后,我们看到了 C 字符串,可以表示如下:
const char* mySelector = "mySelector";
但objc_selector 不是 C 字符串,它是结构,它可以包含其他内容。所以想知道objc_selector结构是怎么实现的。
【问题讨论】:
-
这是一个更详细的答案...stackoverflow.com/a/19322677/1016102
-
@DanielBocksteger 哇,非常感谢你!我不知道为什么我以前没有找到这个答案。请发布此链接以回答,我想选择您的答案为正确的。它真的节省了我的时间!
-
SEL 是封闭结构。它的内容不应该打扰你。
-
这是 Alexander 搜索的答案 stackoverflow.com/a/19322677/1016102...但 dehlens 也是正确且好的 :-)
-
objc_selector没有实现,导致 c/c++ 编译器允许未定义的结构,请参考https://gist.github.com/Jichao/f663400a0a56011171291bbac9aa372b
标签: ios objective-c macos selector objective-c-runtime