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) -> ())?
我正在尝试将 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) -> ())?