防止暴露的覆盖方法到Swift头

时间:2017-12-01 01:40:09

标签: objective-c swift

我正在重写Swift中的Objective-C项目。我已经完成了Swift和Objective-C,MixAndMatch文档的互操作性,并转换了很多类。

这是一个有趣的场景;我有一个用Swift编写的模型类

class FooModel {
    @objc override func create(_ data: [String: [String: Any]]) {
       ...
    }
}

当它暴露给ProjectModuleName-Swift.h以便从ObjC代码

进行访问时
-(void)create:(NSDictionary<NSString *, NSDictionary *> * _Nonnull)data;

它接受字典类型的参数,该参数可以包含字符串键和字典值。

当从Objective-C代码调用它时,如果我传递一个带有字符串键和不同值类型的字典,它就会崩溃。因为Swift期望每个值都有一个字典。

如何在暴露于swift标头时控制该函数或保证@nonobjc不会破坏方法调用?

我尝试将@nonobjc添加到方法中,因此不会向Swift公开。它适用于一个模型类,但不适用于所有模型类。当我将它添加到某些时,该方法甚至不再被调用。

0 个答案:

没有答案