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];
这两个选项都可以,您可以使用对您来说更有意义的一个。
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];
这两个选项都可以,您可以使用对您来说更有意义的一个。