iOS-利用performSelector调用方法

performSelector在主线程中运行。

在调用方法时,有时会利用performSelector调用,

performSelector是运行时系统负责去找方法的,在编译时候不做任何校验;如果直接调用编译是会自动校验。如果方法不存在,在Xcode中写完就可以发现没这个方法),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃);Cocoa支持在运行时向某个类添加方法,即方法编译时不存在,但是运行时候存在,这时候必然需要使用performSelector去调用。
与直接调用相比performSelector方法可以灵活的运用,使用方便,只需要告诉他会调用什么方法,然后在多长时间对他进行调用即可。

调用方法
[self performSelector:@selector(clickEvent:) withObject:@"abc" afterDelay:3];

[self clickEvent:@"perform"];

- (void)clickEvent:(NSString *)msg {
    NSLog(@"message:%@",msg);
}

输出
2017-02-04 11:24:18.367 AFN[18840:707947] message:perform
2017-02-04 11:24:21.367 AFN[18840:707947] message:abc

由于运行时可以添加方法所以对方法是否存在的判断是非常重要的,方法不存在会导致崩溃

-(BOOL)respondsToSelector:(SEL)aSelector;

你可能感兴趣的:(iOS-利用performSelector调用方法)