我有一个SEL从当前对象获取的代码示例,
SEL callback = @selector(mymethod:parameter2);
Run Code Online (Sandbox Code Playgroud)
我有一个像这样的方法
-(void)mymethod:(id)v1 parameter2;(NSString*)v2 {
}
Run Code Online (Sandbox Code Playgroud)
现在我需要转移mymethod到另一个对象,比如说myDelegate.
我试过了:
SEL callback = @selector(myDelegate, mymethod:parameter2);
Run Code Online (Sandbox Code Playgroud)
但它不会编译.
我发现该SEL类型具有下一个定义:
typedef struct objc_selector *SEL;
Run Code Online (Sandbox Code Playgroud)
但我找不到如何objc_selector实施。
好的,如果我们有下一个代码
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
SEL mySelector = NSSelectorFromString(@"mySelector");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
, thenmySelector只是一个指针。在它包含的地址之后,我们看到了 C 字符串,它可以显示为:
const char* mySelector = "mySelector";
Run Code Online (Sandbox Code Playgroud)
但objc_selector不是 C 字符串,它是结构,它可以包含其他内容。所以我想知道objc_selector结构是如何实现的。