IOS SEL简介


一、OC SEL简介

SEL可以理解为一种数据类型,这种数据类型主要存储方法所对应的地址(此处类似于c语言中的函数指针)。
在OC中,每个类的方法都存储在类对象中,每个方法在内存中都有相应的地址编号,根据SEL数据可以找到相应的方法地址,进行方法调用。


二、SEL 创建方法

@interface testClass : NSObject 
 
+ (void)fun1; 
- (void)fun2:(NSString *)t; 
@end 
 
@implementation testClass

+(void)fun1{
  NSLog("fun1执行!");
}
-(void)fun2:(NSString *)s{
 NSLog("fun2执行!");
}

@end

//以下是创建SEL类型的两种方法

SEL t1 = @selector(fun1); //通过 selector将fun1方法 转换成SEL类型
SEL t2 = NSSelectorFromString(@"fun1"); //通过NSSelectorFromString方法将字符串fun1,转换为SEL类型,并且此t2是指向fun1方法 


二、SEL 使用方法


#import " testClass.h "

int main(int argc, const char * argv[]) 
{ 
    testClass *test = [[testClass alloc] init]; 
    
    //通常执行方法 采用直接调用
    [test fun1];
   
    //采用SEL类型 间接调用
    [test performSelector:@selector(fun1)]; 
    [test performSelector:@selector(fun2:) withObject:@"参数"]; 
      
    return 0; 
} 


二、SEL 用途

常用于按钮传送方法
[button setAction:@selector(fun1:)]; 

相关阅读:

c 语言函数类型简介