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方法來判斷某個對象是否實現了指定的方法。