处理 Swift 调 OC 方法被简化产生歧义报错 : Ambiguous user of 'add'

描述

在 Swift 工程中, RCCoreClient 的以下方法会被优化成 add 方法,导致在调用过程中报错:

- (void)addConnectionStatusChangeDelegate:(id<RCConnectionStatusChangeDelegate>)delegate;
- (void)addReceiveMessageDelegate:(id<RCIMClientReceiveMessageDelegate>)delegate;

分析(根因分析、需求分析)

Swift 4 以下的版本对 Objective-C 的方法简化造成了这个问题。

Swift 4 及之后版本不存在该问题。

解决方案

在 Swift 工程中添加一个 OC 适配类,实现上述方法。在 Swift 工程中使用适配器的方法。

+ (void)addConnectionStatusChangeDelegate:(id<RCConnectionStatusChangeDelegate>)delegate {
    [[RCCoreClient sharedCoreClient] addConnectionStatusChangeDelegate:delegate];
}

+ (void)addReceiveMessageDelegate:(id<RCIMClientReceiveMessageDelegate>)delegate {
    [[RCCoreClient sharedCoreClient] addReceiveMessageDelegate:delegate];
}

调用示例:

  func test()  {
        OCAdapter.addReceiveMessageDelegate(self)
        OCAdapter.addConnectionStatusChangeDelegate(self)
    }

链接

更多支持

如有疑问,欢迎提交工单