У меня есть два viewControllers, vcA и vcB.Когда я хочу передать значения в vcA из vcB, я использую делегат следующим образом:
//vcB.swift
protocol TransferDelegate {
func transferValue(msg: String)
}
var delegate: TransferDelegate!
//vcA.swift
class vcA: UIViewController {
}
extension vcA: TransferDelegate {
func transferValue(msg: String){
//xxxxxxx
}
}
Когда vcA push vcB, тогда vcb.delegate = self
Когда vcB хочет передать значения, тогда delegate.transferValue(msg)
Мой вопрос заключается в том, что если я перенесу экземпляр vcA self в vcB вместо установленного делегата следующим образом:
//vcB.swift
class vcB: UIViewController {
var vca: vcA!
func transferValues(msg: String) {
vca.msg = msg
}
}
//vcA.swift
vcb.vca = self
Я пробовал оба эти метода, оба они могут работать.
Так почему же мы используем первый метод, а не второй?
В чем разница между ними или в чем преимущество делегата?