You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中实现多参数Objective-C委托方法遇阻,求解决方案

Objective-C双参数委托方法的Swift实现修正方案
  • 问题核心:你之前写的Swift方法选择器不匹配Objective-C原方法,导致第三方库无法触发该委托。
  • OC原方法- (void)controller:(ControllerType *_Nonnull)module1 controllerDidFinish:(ResponseType *_Nullable)module2;的选择器是controller:controllerDidFinish:,对应Swift必须严格保留双参数和分段命名。

正确的Swift实现代码

@objc public func controller(_ module1: ControllerType, controllerDidFinish module2: ResponseType?) {
    // 在这里编写状态变化后的处理逻辑
}

关键说明

  1. OC多参数方法的每个冒号对应一个参数,Swift方法名必须和OC的分段命名对应:第一个参数对应controller:,第二个对应controllerDidFinish:,所以方法名要写成controller(_:controllerDidFinish:)。
  2. 注意第二个参数的可选性:OC里是_Nullable,所以Swift里要声明为ResponseType?(可选类型)。
  3. 验证方法:可以通过#selector确认选择器是否匹配,确保第三方库能找到该方法:
if self.responds(to: #selector(controller(_:controllerDidFinish:))) {
    print("委托方法选择器匹配成功")
}

内容的提问来源于stack exchange,提问作者Nex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:14:57