поэтому у меня есть класс NSObject
, который контролирует что-то в моем коде, но я хочу, чтобы что-то было сделано в классе NSObject
метод execute в классе UIViewController
, поэтому я использовал два способа ниже, но ни один из них не работает дляme
1 - я использовал протокол делегата, поэтому в поле зрения контроллера я поместил эти
protocol ImagePickerManagerDelegate : NSObjectProtocol {
func showAlert(_ type : Int)
}
class myViewController : UIViewController , ImagePickerManagerDelegate {
func showAlert(_ type : Int) {
print(type)
}
let imagePicker = ImagePickerManager()
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
}
}
, а вот коды в другом классе
class ImagePickerManager: NSObject {
weak var delegate : ImagePickerManagerDelegate?
func foo() {
self.delegate?.showAlert(1)
}
}
будет выполняться функция foo, а также
self.delegate?.showAlert(1)
, но ничего не произойдет
2 - я использовал функцию callBack, но опять ничего не произойдет
class ImagePickerManager: NSObject {
var ErrorCallback: ((Int) -> ())?
func ErrorAlert(_ callback: @escaping ((Int) -> ())) {
ErrorCallback = callback
}
func foo() {
self.ErrorCallback?(1)
}
}
и вот код UIViewController
для CallBackFunction
ImagePickerManager().ErrorAlert(self) { type in
print(type)
}
Мне нужен один из этих методов для выполнения функции в моем коде