Доступ к функции Swift для объекта из класса Objective-C
Я пытаюсь внедрить некоторые Swift-фреймворки в мой проект Objective-C. Я уже настроил все Bridge-Headers и также написал @objc перед функциями и классами в быстром классе. Поэтому необходимо сделать следующее, но пример кода приведен в Swift:
barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15)
Я должен выполнить этот код в классе Obj-C для объекта barView. Я пытался сделать это, но это не работает:
[_barView.addBarBackground startAngle: 90 endAngle: -270 radius: 100 width: 15];
Что я должен делать?
РЕДАКТИРОВАТЬ:
У меня есть соединение IBOutlet:
@property (strong) IBOutlet OGCircularBarView *barView;
Итак, есть объект с именем barView. У меня также есть некоторый Swift-класс с кодом:
import Cocoa
@objc public class OGCircularBarView: NSView, Sequence {
//...
@objc public func addBarBackground(startAngle: CGFloat, endAngle: CGFloat, radius: CGFloat, width: CGFloat, color: NSColor) {
//some code
}
//...
}
Мне нужно выполнить этот код (который приведен в Swift) в классе Objective-C:
barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15)
Как я могу переписать его так, чтобы он работал в Objective-C?
1 ответ
Попробуй это:
[_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: ...]
Надеюсь, это поможет.