Какой лучший способ загрузки и выгрузки в UIImageViews

#ios #objective-c #uiviewcontroller #uiimageview

#iOS #objective-c #uiviewcontroller #uiimageview

Вопрос:

Добрый день всем. Мне нужна помощь в понимании того, правильно ли я поступаю или нет по этому вопросу UIImageViews .

Сценарий:

  1. У меня есть a mainViewController и 3 UIViewController s.
  2. Каждый из 3 viewControllers имеет не менее 20 UIImageViews . PNG-файлы имеют размер около 20-30 КБ каждый, и большинство из них имеют прозрачные части и не находятся в массиве.
  3. Когда загружается 1 из 3 viewcontroller , я alloc и init все UIImageviews с изображениями.
  4. Используя кнопки, я вызываю массив BOOLs для включения или выключения изображений при переходе со страниц на страницы — около 7-10.
  5. Это работает, но я нахожу, что он работает немного медленно, особенно когда я загрузил его на iphone.

Запросы:

  1. Есть ли лучший способ сделать это, основываясь на вашем опыте?
  2. Будет ли лучше, если я просто использую 7-10 контроллеров просмотра, а затем загружу то, что действительно необходимо в сцене? (Мне действительно нужна была только половина в среднем на сцену, но я понимаю, что использование ViewControllers будет «тяжелее»)
  3. Любой материал для чтения или ссылка, которые могут привести меня к ответу на этот вопрос?
  4. Когда я вернусь к mainViewController использованию модального segue , сделайте все UIImageViews на текущем Viewcontroller , а затем выгрузите автоматически? (ARC ВКЛЮЧЕН)

Спасибо.

Комментарии:

1. # 4 нет, и вы никогда не должны возвращаться к предыдущему контроллеру с помощью segue, если только это не unwind segue. Если вы вернетесь с помощью unwind или в коде с dismissViewControllerAnimated:completion: , то контроллер, который вы покидаете, будет освобожден.

2. @rdelmar. С учетом того, что вы сказали, если я создам отдельные UIViewCOntroller s, затем загружу UIImageviews отдельно, а затем использую seque для переключения страниц, все UIImageView вместе с его изображениями будут там, пока я не использую unwindsegue ? который затем будет потреблять пространство процессора больше, чем то, что у меня есть в настоящее время?

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

4. @rdelmar, в настоящее время это те же экземпляры, созданные в XIB (MainViewController, 3 контейнера и переходы), все вложенные представления закодированы. Я никогда не пробовал создавать экземпляр UIVIewController только с помощью кода. В чем разница между new и same?

5. Если вам нужно, чтобы контроллер выглядел так, как он выглядел, когда вы его оставили, когда вы вернетесь, тогда вам нужно использовать тот же экземпляр. Если вы этого не сделаете, то этот контроллер может быть освобожден, когда вы оставите его, что освободит память (хотя с изображениями вы должны убедиться, что они не кэшируются). Какой путь выбрать, зависит от ваших потребностей и действительно ли вам нужно экономить память.