Selector的使用(选择器)

   //去除在ARC下使用performSelector:的警告

 

 

    //[对象指针 减方法]

        //[Dog alloc] --> alloc出来的这块空间是对象

        //dog --> 对象指针,指向对象

        Dog *dog = [[Dog alloc]init];

        //在调用一个方法前,先判断类里面是否已经实现了这个方法 --> 判断类是否响应这个方法

        

//        [dog bark];

        

       

//去除在ARC下使用performSelector:的警告

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Warc-performSelector-leaks"

        

        //选择器:SEL. @selector(方法名),把对应的方法名转变为SEL类型

        SEL sel = @selector(bark);

        if ([dog respondsToSelector:sel]) {

            //如果dog可以响应选择器里面的方法

            [dog bark];

        }

        else{

            NSLog(@"没有实现bark这个方法");

        }

        

        SEL sel1 = @selector(run);

        if ([dog respondsToSelector:sel1]) {

            //1.

            //            [dog run];

            //2.

            [dog performSelector:sel1];

        }

        else{

            NSLog(@"没有实现run这个方法");

        }

        

        SEL sel2 = @selector(setName:);

        if ([dog respondsToSelector:sel2]) {

            //如果能响应选择器

            //相当于[dog setName:@"xiaobai"];

            [dog performSelector:sel2 withObject:@"xiaobai"];

        }

        else{

            NSLog(@"没有实现setName:这个方法");

        }

        

        NSString *dogName = dog.name;

        NSLog(@"dogName = %@",dogName);

 

        

#pragma clang diagnostic pop

 

 

 

 

二、选择器SEL

 

选择器类型  SEL 和C语言函数指针类似

@selector(方法名) 可以把一个方法转化为选择器,这样我们就可以通过选择器调用函数

 

我们可以把OC的方法 都转化为SEL选择器

 

 

ARC  产生的警告

 

忽略 选择器 这个警告

 

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Warc-performSelector-leaks"

                

#pragma clang diagnostic pop

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值