dissmissviewcontroller / unwind segue / (custom) segue Какой из них, когда и почему?

Я только что закончил свое первое приложение. Я собирался отправить его, когда обнаружил утечку памяти (10 МБ). Согласно этой публикации, это вызвано переходами, которые я использую.

Насколько я понимаю, в настоящее время мое приложение генерирует новое представление каждый раз, когда я выполняю переход. Я прочитал много сообщений, которые в конечном итоге сбили меня с толку. Должен ли я использовать dissmissViewController? Расслабиться Сегью?

Этот пост был действительно полезен в отношении раскрутить переход. Но с точки зрения пользовательского интерфейса мне нравится текущее решение PerformSegueWithIdentifier, так как я создал хорошие горизонтальные скользящие переходы. Есть ли способ настроить переход при использовании раскрутки?

Хотелось бы, чтобы была возможность просто "убить" предыдущий ViewController в пользовательском коде перехода...

ps: вот код одного из переходов:

import UIKit

class FirstCustomSegueUnwind: UIStoryboardSegue {
override func perform() {
    var firstVCView = self.sourceViewController.view as UIView!
    var secondVCView = self.destinationViewController.view as UIView!


    let screenWidth = UIScreen.mainScreen().bounds.size.width
    let screenHeight = UIScreen.mainScreen().bounds.size.height

    secondVCView.frame = CGRectMake(-screenWidth, 0.0, screenWidth, screenHeight)

    let window = UIApplication.sharedApplication().keyWindow
    window?.insertSubview(secondVCView, aboveSubview: firstVCView)

    UIView.animateWithDuration(0.4, animations: { () -> Void in
        firstVCView.frame = CGRectOffset(firstVCView.frame, screenWidth, 0.0)
        secondVCView.frame = CGRectOffset(secondVCView.frame, screenWidth, 0.0)


        }) { (Finished) -> Void in
            self.sourceViewController.presentViewController(self.destinationViewController as! UIViewController, animated: false, completion: nil)

    }


}
}

person Quentin Malgaud    schedule 11.05.2015    source источник
comment
Нет никакой разницы в том, как вы отклоняете свой UIViewController, если у вас нет чего-то, что удерживает указатель на него.   -  person Schemetrical    schedule 12.05.2015
comment
Привет @Schemetrical, спасибо за ваш комментарий. Вы имеете в виду, что я могу использовать обычные переходы или что нет никакой разницы между использованием rejectViewController и раскруткой перехода? Кроме того, что вы подразумеваете под указателем? В некоторых случаях я передаю значение этому новому viewController, хотя в большинстве случаев значение равно нулю.   -  person Quentin Malgaud    schedule 12.05.2015
comment
Переход на раскрутку — это отклонение ViewController, но он передает данные обратно в основной контроллер. rejectViewController просто выполняет раскрутку, не возвращая данные. Если вы хотите делать пользовательские анимации, я предлагаю вам прочитать о лучших способах использования пользовательского перехода, потому что код, который вы только что вставили, является ужасным и хакерским решением для пользовательского перехода.   -  person Schemetrical    schedule 12.05.2015