SEL (@selector) 原理及本质

SEL (@selector) 原理及本质/* 1.SEL其实是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址。找到方法地址就可以调用方法2.@selector()就是取类方法的编号,等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取.它的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)3.其实消息就是SEL */main(){Person *p = [[Person alloc] init];[p test2];NSString *name = @”test2″;SEL s = NSSelectorFromString(name);[p performSelector:s];SEL s = @selector(test3:);[p performSelector:s withObject:@”456″];[p test2];;}@interface Person : NSObject+ (void)test;- (void)test2;- (void)test3:(NSString *)abc;@end@implementation Person+ (void)test{NSLog(@”test—–“);}- (void)test2{// _cmd代表着当前方法NSString *str = NSStringFromSelector(_cmd);(@”调用了test2方法—–%@”, str);}- (void)test3:(NSString *)abc{NSLog(@”test3—–%@”, abc);}@end

希望你灰暗的心情在此刻明亮起来,去迎接美好的明天!

SEL (@selector) 原理及本质

相关文章:

你感兴趣的文章:

标签云: