Почему у плохой практики есть viewController?

У меня есть два контроллера вида, MainVC и ModalVC .

Когда пользователь нажимает кнопку на MainVC , появляется контроллер модального представления.

Затем пользователь может нажать другую кнопку, чтобы отменить ее и вернуться к основному.

Я пробовал эти два метода, и они оба выполняют одно и то же: они отклоняют модальный контроллер:

 //method 1: // File: ModalVC.swift // @IBAction func dismissTapped() { self.dismissViewControllerAnimated(false, completion: nil); } 

Это хорошо работает, как я сказал, но рассмотрим другой метод: используя делегацию, чтобы позволить главному контроллеру отклонить:

 // 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); } } 

Поскольку эти два метода делают нужным, я должен беспокоиться о любой возможной утечке памяти?

Любое объяснение поможет

  • Как обновить представление после ввода applicationWillEnterForeground?
  • Определите, было ли отображаемое представление нажато или появилось из кнопки «Назад» на панели навигации
  • Подклассификация класса UIViewController
  • Как достоверно обнаружить, что UIViewController был уволен
  • Ошибка утверждения с помощью MBProgressHUD - вид не должен быть nil
  • Как создать пользовательский класс представления iOS и создать несколько экземпляров его (в IB)?
  • Вернитесь к контроллеру исходного представления, когда пользователь выходит из системы
  • iPhone, как добавить вид контроллера контроллера на другой вид контроллера?
  • One Solution collect form web for “Почему у плохой практики есть viewController?”

    Использование делегирования – лучший и более гибкий способ отклонить контроллер просмотра.
    Цель этого заключается в том, что в каком-то будущем или в каком-либо другом месте вашего кода вы можете повторно использовать этот VC, но по некоторым причинам вы не можете представить его модально, а нажимать на стек навигации. Поэтому ваш ModalVC не знает, как это было представлено, но делегирует.
    В этом случае у вас может быть 2 места в вашем коде

    1. Вы представляете это модальные и делегированные вызовы

       [self dismiss...] 
    2. Вы вставляете его в стек навигации и делегируете вызовы

       [self.navigationController popView...] 
    3. Вы добавляете его в качестве дочернего VC и делегирования вызовов

       [someParentVC removeChild..] 

      или любой другой соответствующий рабочий процесс для его удаления.

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.