OC高效率52之多用GCD,少用performSelector系列方法

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    id object;
    [object performSelector:@selector(selectorName)];
    [object selectorName];//两种方法等效

//    动态绑定效果
    SEL seletor;
    int a ;
    if (a==1){
        seletor = @selector(foo);
    }else if (a==2){
        seletor = @selector(bar);
    }else{
        seletor = @selector(baz);
    }
    //performSelector 可能导致内存泄露
    //局限性 能传的参数太少,仅限于对象
    
    //利用GCD来替代   延后执行任务
    [self performSelector:@selector(dosomeThing) withObject:nil afterDelay:5.0f];
    //Use dispatch_after
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 *NSEC_PER_SEC));
    dispatch_after(time, dispatch_get_main_queue(), ^{
        [self dosomeThing];
    });
    
    
    //把任务放在主线程上执行
    [self performSelectorOnMainThread:@selector(dosomeThing) withObject:nil waitUntilDone:NO];
    
    dispatch_async(dispatch_get_main_queue(), ^{
        [self dosomeThing];
    });
    /**
     *   如果想把任务放在另一个线程上执行,那么最好不要用performSelector系列方法,而是应该把任务封装到块里,然后调用大中枢派发机制的相关方法来实现
     *
     */
    
    
}
-(void)selectorName{

}
-(void)dosomeThing{

}




- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


转载于:https://my.oschina.net/u/2319073/blog/646275

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值