选择器Selector的使用

来源:互联网 发布:python 绘制中国地图 编辑:程序博客网 时间:2024/05/19 18:14
selector oc 数据类型 选择器 跨类传参 方法名 sel it 分类: [iPhone开发]
  Selector是OC特有的一种数据类型。可以简单理解为方法的调用。和普通方法调用不同的是。选择器的特点是可以跨类传参。你可以在A类中声明某方法,然后在B类中控制该方法的调用。
  说白了SEL就是返回方法名。
  这样的机制大大的增加了我们的程序的灵活性,我们可以通过给一个方法传递SEL参数,让这个方法动态的执行某一个方法;我们也可以通过配置文件指定需要执行的方法,程序读取配置文件之后把方法的字符串翻译成为SEL变量然后给相应的对象发送这个消息。
  SEL sel = @selector(setName:age:); //selector的声明
  
  当然,在实际应用中,selector是不需要使用这个声明的。因为selector实际上就是方法名。所以直接使用写好的方法名就行了。
  跨类动态调用方法示例:
  a.m
  
  -(void) forTest
     {
B *b = [B initWithDelegate:self 
  Selector1: @selector(testA:) 
  Selector2:@selector(testB:) 
  isA:YES];
     }
     
     -(void) testA
     {
NSLog(@"I'm TestA");
     }
     -(void) testB
     {
NSLog(@"I'm TestB");
     }


     b.m
     -(id)initWithDelegate:(id) m_delegate
  Selector1: (SEL) testA
  Selector2: (SEL) testB
  isA:(BOOL) isTrue
    {
forTestA = testA;//在H文件中定义过SEL类型的forTestA了。
  forTestB = testB;//同上
if(isTrue)
    [m_delegate forTestA];
        else 
    [m_delegate forTestB];


}
0 0
原创粉丝点击