Swift - Obj C 与闭包/块的互操作性

Swift - Obj C Interoperability with Closures / Blocks

我正在尝试将 swift class 导入到我的 Obj C 项目中。一切正常,但我正在尝试将此 Swift 闭包语句转换为 OBJ C。我相信这将是 obj c 中的一个块,但我似乎无法理解它,我们将不胜感激!

Swift声明: public var otpEnteredString :((String)->())?

Swift 在视图控制器中使用:

    ObjectName.otpEnteredString = { pin in
    NSLog("The entered pin is %@",pin);
}

在 Obj C 中,我正在尝试做

    [ObjectName otpEnteredString:^(NSString *pin){
    NSLog(@"The entered pin is %@",pin);
}];

但我得到标准的“没有可见界面声明选择器.. 任何帮助将不胜感激!

我可以在 xcode 中看到声明,但我不完全确定如何将其转换为 obj c

试试这个:

ObjectName.otpEnteredString = ^(NSString *pin){
    NSLog(@"The entered pin is %@",pin);
};

或者这样:

[ObjectName setOtpEnteredString:^(NSString *pin){
    NSLog(@"The entered pin is %@",pin);
}];

改为

@objc
public var optEnteredString : ((String) -> ())?