#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