#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