一、首先解释下performSelector方法中每个参数的意义:
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;
(1)aSelector:表示你要调用的方法
(2)anArgument:如果你要调用的方法中需要传递参数,那么anArgument就表示你要传递的值;如果你要调用的方法不需要传递参数,那么此处传nil
(3)delay:表示你要延迟的时间
二、使用此函数要注意的问题:
此函数执行时是单线程的,也就意味着你在用用这个函数时。必须等调用这个函数的方法全都执行完了以后才会执行此函数中你要调用的方法
三、具体实例:
- (void)viewDidLoad
{
[superviewDidLoad];
[selfperformSelector:@selector(print:)withObject:@"you can do it!"afterDelay:1];
NSLog(@"Nothing is impossible!");
}
-(void)print:(NSString *)string{
NSLog(@"string is:%@",string);
}
打印结果如下:
四、引申:
如果你想要执行此函数的时候是多线程,那么可以用下面的方法:
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;
具体示例如下:- (void)viewDidLoad
{
[superviewDidLoad];
[selfperformSelectorOnMainThread:@selector(output:)withObject:@"main thread"waitUntilDone:YES];//YES表示允许多线程,如果想要单线程执行,把YES变为NO 即可
NSLog(@"what happened?");
}
-(void)output:(NSString *)string{
NSLog(@"this string is:%@",string);
}
打印结果如下: