В моем приложении есть драйвер для подключения к весам. Мое приложение должно использовать масштабирование в нескольких частях кода, поэтому я сделал помощник для упрощения кода. Мой помощник имеет такой код:
protocol ScalesHelperDelegate {
func scalesHelperDelegate_error()
func scalesHelperDelegate_pluSavedWithSuccess()
}
public class ScalesHelper {
static var delegate: ScalesHelperDelegate?
public static func getBill(scaleIp:String, scalePort:Int, barcode:String) {
let scalesManager = ScalesManager.init()
scalesManager.delegate = self as? ScalesManagerDelegate
let scaleConfig = ScalesConfig.init(ip: scaleIp, port: scalePort)
scalesManager.getBillFromScale(config: scaleConfig, scaleType: .type, bill: barcode, time: 3.0)
}
}
extension ScalesHelper: ScalesManagerDelegate {
public func scalesManagerDelegate_error() {
ScalesHelper.delegate?.scalesHelperDelegate_error()
}
public func scalesManagerDelegate_success(rowsFromScale: [WeightedProduct]?) {
if let weightedPrd = rowsFromScale {
//For now I don't do nothing
} else {
ScalesHelper.delegate?.scalesHelperDelegate_pluSavedWithSuccess()
}
}
}
, когда я пытаюсь запустить приложение и использовать этого помощника, я увидел, что scalesManager.delegate
всегда равен nil и никогда не вызывает методы делегата (смотрите расширение). Есть ли способ использовать stati c fun c с делегатом? Спасибо