У меня есть два контроллера вида, MainVC
и ModalVC
.Почему у плохой практики есть viewController?
Когда пользователь нажимает кнопку на MainVC
, появляется модальный контроллер.
Пользователь может затем нажать другую кнопку, чтобы отменить его и вернуться к основному.
Я пробовал эти два способа и оба они сделать то же самое: они отвергают модальный контроллер представления:
//method 1:
// File: ModalVC.swift
//
@IBAction func dismissTapped() {
self.dismissViewControllerAnimated(false, completion: nil);
}
Это прекрасно работает, как я сказал, но рассмотрим другой метод: с помощью делегирования, чтобы позволить главный контроллер делать Dismissing:
// method 2: part A
// File: ModalVC.swift
//
protocol ModalVCDelegate {
func modalVCDismissTapped();
}
...
...
...
var delegat:ModalVCDelegate? = nil;
...
...
@IBAction func dismissTapped() {
delegate.modalVCDismissTapped();
}
и на главном вид контроллера пользовательского файла класса:
// method 2: part B
// File: MainVC.swift
class MainVC : UIViewController, ModalVCDelegate {
...
...
func modalVCDismissTapped() {
self.dismissViewControllerAnimated(false, completion: nil);
}
}
Поскольку эти два метода делают это необходимо, я должен беспокоиться о возможной утечке памяти?
Любое объяснение поможет
Отличный ответ. Подводя итог в одном предложении: ваш диспетчер вида «модальный» не знает, как клиенты будут использовать/представлять его, следовательно, он должен нести ответственность за его увольнение. –
Вкратце: тот, кто создал и владеет им, должен справиться с его увольнением. – Eiko