Objective-C 带有^符号的方法参数

Objective-C method parameter with ^ symbol

objective-c代码中的方法签名之一

-(void)funcName: (const NSString *)name parameter: (void(^)(ClassName *input)) obj

class定义头文件是

@interface ClassName : NSObject
@property NSObject *data;
@end

现在如何准备和传递第二个参数?

在 Objective-C 中编写您自己的方法时,必须将参数显式类型转换为您要传递的数据类型。 ^ 符号表示您正在传递一个块。如果您想在块之后传递另一个参数 - 您只需添加方法名称的下一部分,后跟数据类型,然后是您选择的变量名称。你会这样做:

-(void)funcName: (const NSString *)name parameter: (void(^)(ClassName *input)) obj withOtherParameter:(NSString *) param {

// Use it here and do what you will
NSLog(@"Param = %@", param);

}

这假设您传递的是一个 NSString 被调用 "param"。如果您想传入任何其他数据类型,只需将代码中 "param" 之前的 (NSString *) 替换为 (NSNumber *)(NSInteger) ,然后将转换 param 变量作为您想要的任何数据类型。

你可以传递一个作为参数,例如:

选项 1.

[... funcName:@"" parameter:^(ClassName * input) {
    NSLog(@"I'm inside the block!");
}];

选项 2.

void(^myBlock)(ClassName *) = ^(ClassName * input) {
    NSLog(@"I'm inside the block!");
};

[... funcName:@"" parameter:myBlock];

这两个选项都可以,您可以使用对您来说更有意义的一个。