从 Objective-C class 访问对象的 Swift 函数

Access Swift function for an object from Objective-C class

我正在尝试在我的 Objective-C 项目中实施一些 Swift 框架。我已经设置了所有 Bridge-Headers,还在函数和 classes 之前写了 @objc 在 swift class 中。所以需要做如下,但是示例代码在Swift:

barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15)

我必须在 Obj-c class 中为对象 barView 执行此代码。我尝试这样做,但它不起作用:

[_barView.addBarBackground startAngle: 90 endAngle: -270 radius: 100 width: 15];

我该怎么办?

编辑:

我有一个 IBOutlet 连接:

@property (strong) IBOutlet OGCircularBarView *barView;

所以,有一个名为barView 的对象。我还有一些 Swift-class 代码:

import Cocoa

@objc public class OGCircularBarView: NSView, Sequence {
     //...
     @objc public func addBarBackground(startAngle: CGFloat, endAngle: CGFloat, radius: CGFloat, width: CGFloat, color: NSColor) {
        //some code
     }
     //...
}

我需要在 Objective-C class:

中执行该代码(在 Swift 中给出)
barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15)

我如何重写它才能在 Objective-C 中工作?

试试这个:

[_barView addBarBackgroundStartAngle: 90 endAngle: -270 radius: 100 width: 15];

第一个问题是你不能对方法使用点语法;这就是括号的用途:[object message:withArguments:...]

其次是Swift函数名对于Obj-C翻译有点别扭。如果你声明swift函数如下:

func addBarBackgroundWithStartAngle(_ startAngle: Type, endAngle: Type...

...它会被翻译成更容易阅读的:

[_barView addBarBackgroundWithStartAngle: endAngle: ...]

希望对您有所帮助。