在objective-c中将swift函数作为参数传递

PRP

我有一个 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在objective-c中将参数作为key和其他参数作为body传递

Objective-C传递块作为参数

Objective-C传递方法作为参数

如何在objective-c中将block作为宏的参数传递?

如何将Swift结构作为参数传递给Objective-C方法

从Single View Application(objective-c)以函数作为Cocoa Touch Framework(swift)的参数的调用方法

如何调用一个Objective-C函数,它接受Swift的块字典作为参数?

NSNumber作为参数在Objective-C的块中传递

如果在Objective-C中将其作为参数传递,引用是否仍然会弱?

在Swift中将字典对象传递给Objective C协议

在Swift中将函数作为参数传递

使用来自Objective C类的参数调用Swift函数

Swift 参数在 Objective C 函数中不可见?

Objective-C:多维数组作为参数

在C ++中将函数作为参数传递

在C函数中将指针作为参数传递

在 C++ 中将函数作为参数传递

在C函数中将结构作为参数传递

在objective-c块中传递参数

Objective-c传递参数到IBAction

为什么在Objective-C中将变量和方法作为字符串传递?

iOS-如何将数组作为参数传递给AFNetworking(Objective-C)

是否可以将选择器或方法签名作为参数传递给Objective-C?

如何在Swift中将字典传递给Objective-C方法

Objective-C 访问 Swift 包函数

从Objective-C类调用Swift函数

从Objective C中的Swift函数获取值

如何在函数 Swift UI 中将视图作为参数传递

在swift中将多个闭包作为参数传递给函数