iOS中perform+@selector多參數(shù)傳遞

iOS
小云
145
2023-09-09 03:14:45
欄目: 編程語言

在iOS中,使用performSelector方法可以調(diào)用一個(gè)方法,但是只能傳遞一個(gè)參數(shù)。如果需要傳遞多個(gè)參數(shù),可以通過將參數(shù)封裝為一個(gè)對(duì)象的方式來實(shí)現(xiàn)。

以下是一個(gè)示例代碼:

- (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:&param1 atIndex:2];
[invocation setArgument:&param2 atIndex:3];
[invocation invoke];
}

在performSelectorWithMultipleParameters方法中,我們首先準(zhǔn)備需要傳遞的參數(shù)param1和param2。然后通過NSInvocation的方式來調(diào)用方法methodWithMultipleParameters:param2:。我們使用methodSignatureForSelector方法獲取方法的簽名,然后創(chuàng)建一個(gè)NSInvocation對(duì)象并設(shè)置target、selector和參數(shù)。最后通過invoke方法來調(diào)用方法。

在methodWithMultipleParameters:param2:方法中,我們可以打印出傳遞的參數(shù)值。

參考文檔:

0