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

时间:2015-08-04 11:14:10

标签: objective-c function-parameter

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

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

类定义头文件是

{{1}}

现在如何准备和通过第二个参数?

2 个答案:

答案 0 :(得分:1)

您可以将作为参数传递,例如:

选项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];

这两个选项都可以使用,您可以使用对您更有意义的任何选项。

答案 1 :(得分:0)

在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);

}

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