我有一个 swift 类A
,它接受委托。我还有另一个 swift 类B
,它实现了委托。现在对象A
是从objective-c 代码实例化的。
我需要将function g
作为参数传递给function f
. 我该怎么做呢 ?
接受委托的类:
class A {
func f(_ e: String, d D: @escaping ((String)->Void)) {
D() // Call the function that we recieved as a parameter
}
}
实现委托的类:
class B {
func g(_ m: String) {
// Implementation.
}
}
如何从 obj-c 调用事物:
A *a;
B *b;
[a f:@"someString" d:b.g] // How to pass the swift function as a parameter ?
您应该g
像这样将调用封装到一个 Objective-C 块中:
[a f:@"someString" d:^(NSString *s) {
[b g:s];
}];
如果您还想保留d
变量的参数函数,则需要一个闭包字典:
A *a = ...;
B *b = ...;
NSDictionary *myFunctions = @{
'g': ^(NSString *s) { [b g:s]; },
'h': ^(NSString *s) { [b h:s]; }
};
NSString *functionName = ...;
[a f:@"someString" d:myFunctions[functionName]];
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句