在iOS中,使用performSelector方法可以調用一個方法,但是只能傳遞一個參數。如果需要傳遞多個參數,可以通過將參數封裝為一個對象的方式來實現。
以下是一個示例代碼:
- (void)methodWithMultipleParameters:(NSString *)param1 param2:(NSInteger)param2 {
NSLog(@"param1 = %@, param2 = %ld", param1, (long)param2);
}
- (void)performSelectorWithMultipleParameters {
NSString *param1 = @"Hello";
NSInteger param2 = 123;
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(methodWithMultipleParameters:param2:)]];
[invocation setTarget:self];
[invocation setSelector:@selector(methodWithMultipleParameters:param2:)];
[invocation setArgument:¶m1 atIndex:2];
[invocation setArgument:¶m2 atIndex:3];
[invocation invoke];
}
在performSelectorWithMultipleParameters方法中,我們首先準備需要傳遞的參數param1和param2。然后通過NSInvocation的方式來調用方法methodWithMultipleParameters:param2:。我們使用methodSignatureForSelector方法獲取方法的簽名,然后創建一個NSInvocation對象并設置target、selector和參數。最后通過invoke方法來調用方法。
在methodWithMultipleParameters:param2:方法中,我們可以打印出傳遞的參數值。
參考文檔: