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?) { // 在这里编写状态变化后的处理逻辑 }
关键说明
- OC多参数方法的每个冒号对应一个参数,Swift方法名必须和OC的分段命名对应:第一个参数对应
controller:,第二个对应controllerDidFinish:,所以方法名要写成controller(_:controllerDidFinish:)。 - 注意第二个参数的可选性:OC里是
_Nullable,所以Swift里要声明为ResponseType?(可选类型)。 - 验证方法:可以通过
#selector确认选择器是否匹配,确保第三方库能找到该方法:
if self.responds(to: #selector(controller(_:controllerDidFinish:))) { print("委托方法选择器匹配成功") }
内容的提问来源于stack exchange,提问作者Nex
相关产品推荐
相关产品推荐

