OC调用swift方法

在swift类中创建了方法:

@objc func changeViewColor(color: UIColor){
        self.backgroundColor = color
    }

在OC中调用:

[test changeViewColor:[UIColor redColor]];

报错:

No visible @interface for 'TestSwiftView' declares the selector 'changeViewColor:'

原因:

在Objective-C中方法名是 changeViewColorWithColor: 而不是changeViewColor: ,因为已经将 color: 暴露为外部标签。

解决方案:

1、用 changeViewColorWithColor: 调用

[test changeViewColorWithColor:[UIColor redColor]];

2、声明方法如下:

@objc func changeViewColor(_ color: UIColor){
        self.backgroundColor = color
    }

3、为Objective-C调用声明方法:

@objc(changeViewColor:) func changeViewColor(color: UIColor){
        self.backgroundColor = color
    }

你可能感兴趣的:(OC调用swift方法)