从 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: ...]
希望对您有所帮助。
我正在尝试在我的 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: ...]
希望对您有所帮助。