#ios #objective-c #uiviewcontroller #uiimageview
#iOS #objective-c #uiviewcontroller #uiimageview
Вопрос:
Добрый день всем. Мне нужна помощь в понимании того, правильно ли я поступаю или нет по этому вопросу UIImageViews
.
Сценарий:
- У меня есть a
mainViewController
и 3UIViewController
s. - Каждый из 3
viewControllers
имеет не менее 20UIImageViews
. PNG-файлы имеют размер около 20-30 КБ каждый, и большинство из них имеют прозрачные части и не находятся в массиве. - Когда загружается 1 из 3
viewcontroller
, яalloc
иinit
всеUIImageviews
с изображениями. - Используя кнопки, я вызываю массив BOOLs для включения или выключения изображений при переходе со страниц на страницы — около 7-10.
- Это работает, но я нахожу, что он работает немного медленно, особенно когда я загрузил его на iphone.
Запросы:
- Есть ли лучший способ сделать это, основываясь на вашем опыте?
- Будет ли лучше, если я просто использую 7-10 контроллеров просмотра, а затем загружу то, что действительно необходимо в сцене? (Мне действительно нужна была только половина в среднем на сцену, но я понимаю, что использование ViewControllers будет «тяжелее»)
- Любой материал для чтения или ссылка, которые могут привести меня к ответу на этот вопрос?
- Когда я вернусь к
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. Если вам нужно, чтобы контроллер выглядел так, как он выглядел, когда вы его оставили, когда вы вернетесь, тогда вам нужно использовать тот же экземпляр. Если вы этого не сделаете, то этот контроллер может быть освобожден, когда вы оставите его, что освободит память (хотя с изображениями вы должны убедиться, что они не кэшируются). Какой путь выбрать, зависит от ваших потребностей и действительно ли вам нужно экономить память.