performSelector的原理和用法
performSelector是NSObject类中的一个方法,用于在当前线程中调用一个指定的方法。
原理: performSelector方法的原理是利用了Objective-C的消息机制。当调用performSelector方法时,runtime会根据方法的名称和参数类型去查找并动态调用对应的方法。因此,我们可以通过performSelector方法来动态地调用方法,而不需要在编码时硬编码调用方法。
用法: performSelector方法有多种情势的重载,可以根据实际需要选择使用。经常使用的几种用法以下:
- (void)performSelector:(SEL)aSelector
这类用法可以用于调用无参数的方法。例如:
[self performSelector:@selector(doSomething)];
等价于:
[self doSomething];
- (void)performSelector:(SEL)aSelector withObject:(id)anObject
这类用法可以用于调用带一个参数的方法。例如:
[self performSelector:@selector(doSomethingWithObject:) withObject:obj];
等价于:
[self doSomethingWithObject:obj];
- (void)performSelector:(SEL)aSelector withObject:(id)anObject1 withObject:(id)anObject2
这类用法可以用于调用带多个参数的方法。例如:
[self performSelector:@selector(doSomethingWithObject1:object2:) withObject:obj1 withObject:obj2];
等价于:
[self doSomethingWithObject1:obj1 object2:obj2];
需要注意的是,performSelector方法在调用时,会进行方法的选择器检查和参数的类型匹配。如果选择器找不到还是参数类型不匹配,会致使程序崩溃。为了不这类情况,可使用respondsToSelector方法来判断某个对象是否是实现了指定的方法。
TOP