2016-11-30 1 views
0

В Swift, лучше ли запустить код инициализации VC в файле prepareForSegue или в viewDidLoad, если это жизнеспособная опция, когда целью является максимизация частоты кадров?В Swift, должен ли я запускать код инициализации VC в файле prepareForSegue или в viewDidLoad, если это жизнеспособная опция, когда целью является максимальная частота кадров?

Существует много раз, когда я могу выбрать установку vc, передав в перечислении, который сообщает ему, что такое vc, и устанавливает его соответственно во время viewDidLoad. Я мог бы вместо этого напрямую настроить эти значения внутри метода prepareForSegue, минимизируя работу во время viewDidLoad. Предполагая, что мне нужно запустить этот код в основном потоке, для наиболее плавного перехода на UI, что предпочтительнее?

+0

Если вы могли бы опубликовать некоторый пример кода, который очень помог бы ответить на ваш вопрос. –

+0

Я буквально изложил все, что имеет отношение к моему вопросу. Если я отправлю образец кода, который был бы не идеальным, это, по моему мнению, отвлекло бы соответствующий ответ ... но теперь, когда я думаю об этом, я мог бы придумать пример кода. – Sethmr

+1

Согласно моим ограниченным знаниям, время будет таким же, как и в ViewDidLoad или в prepareForSegue, однако prepareForSegue уже настроит ваш viewController, но это не повлияет на плавность при переходе, так как при выходе и т. Д. Все подключены, тогда вызывается viewDidLoad, который ранее шаг перехода от одного VC к другому. –

ответ

1

Если вы хотите строго следовать принципам объектно-ориентированного программирования (и я советую вам), каждый объект должен заботиться о своей внутренней инициализации и настройке, а что нет. Что касается того, какой вариант собирается создать более плавный переход интерфейса пользователя, это действительно не имеет значения, поскольку обе опции должны запускаться в основном потоке (UIKit должен запускаться в основном потоке).

+0

Я очень хорошо знаю, что этот метод является наилучшим способом передачи информации между viewControllers. Мой вопрос заключался в максимизации гладкости частоты кадров во время перехода. Я блуждал, если для этой цели prepareForSegue> viewDidLoad или viewDidLoad> prepareForSegue ........ **@A.Jam** 'Что это необязательно имеет отношение к моему вопросу?' – Sethmr

+0

@Sethmr I прочитайте вопрос неправильно. Я обновляю свой ответ. –

+0

Я позову вас, потому что я ценю, что вы переписываете ответ и соглашаетесь с вашим вводом, но я думаю, что есть место для лучшего ответа от кого-то, более осведомленного там, чтобы найти его. – Sethmr

0

Я понял после публикации этого вопроса, что он был в невежестве, потому что оба метода prepareForSegue и viewDidLoad происходят до viewDidAppear и поэтому будут задерживать UI в той же сумме, если оба имеют код в них, который имеет место в главной очереди независимо от того, где код находится в. Поэтому практически не должно быть различий практически во всех условиях, о которых я могу сейчас думать.