|
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
|
||||||||||||||||
Торможение UI при хитрой иерархии классов27.03.2014, 22:40. Показов 1079. Ответов 5
Метки нет (Все метки)
Всем привет!
Извините за много букв, заранее спасибо всем, кто прочитал! Подскажите, пожалуйста, что может быть причиной такого поведения. Есть контроллер, на нем, в частности, 20 кнопок: Первые 10 кнопок: background - изображение, title - буква (вроде маленького алфавита) Вторые 10 кнопок: background - изображение, title - пустой (ячейки, куда будут выводиться буквы) Чтобы не мешать все в кучу в одном контроллере, я решил сделать так: 1. Создал класс "CharsManager", который полностью отвечает за работу с "алфавитом". При создании объекта этого класса я инициализирую его массивом кнопок с буквами:
2. Создал класс "WordManager", который полностью отвечает за отображение вводимого слова. Его при создании аналогично проинициализировал массивом кнопок-ячеек, куда выводятся вводимые буквы. И, как можно увидеть, сделал его делегатом своего "класса клавиатуры". То есть, получается, мой главный контроллер не вмешивается во взаимодействие этих двух сущностей - они сами разбираются, когда там что надо вывести. 3. Создал кнопку "Очистить все", где выполняю следующие действия:
Для чего я собственно, это все пишу. После первого же нажатия "Очистить все" начинаются тормоза UI: девайс (iPad 4) с задержкой реагирует на нажатия кнопок алфавита, и выводит буквы в свои ячейки с видимой паузой. И такое начинает происходить после первого "Очистить все". Я пересмотрел работу всеми профайлерами - все ОК, память бесконтрольно не растет, утечек нет, ничего на графиках профайлера не меняется после нажатия "Очистить все", но факт остается фактом. Может быть мой подход в корне неправильный? И та структура, которую я соорудил, является чем-то ужасным, что может негативно влиять на работу? Буду очень рад каким-то комментариям!
0
|
||||||||||||||||
| 27.03.2014, 22:40 | |
|
Ответы с готовыми решениями:
5
Виртуальные функции при создании иерархии классов
Разработать архитектуру классов иерархии товаров при разработки системы управления потоков товаров |
|
Peace 2 all shining faces
674 / 535 / 85
Регистрация: 05.03.2010
Сообщений: 1,282
|
||||||||||||
| 28.03.2014, 02:34 | ||||||||||||
|
ну из того, что я понял, ничего хитрого тут нету и, судя по коду, ничего сказать нельзя, т.к. вроде все нормально
возможно нужно увидеть больше деталей ![]() единственное - это пару советов по архитектуре и конвенциям наименования (но они темы особо не касаются): т.е ваш метод должен выглядеть так
многие могут не согласиться насчет этих замечаний, и, возможно, такая гибкость тут ни к чему, но если вы разрабатываете какой-то более-менее адекватный проект, то это лучше учитывать
1
|
||||||||||||
|
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
|
||
| 28.03.2014, 07:40 | ||
|
1
|
||
|
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
|
|
| 28.03.2014, 11:32 | |
|
kievkao, начните с того, где у вас происходит обработка нажатия на "букву", затем по стеку вверх идите инструментами "step over/into" и смотрите вызовы.
Где-то много лишних вызовов. И все в главном потоке. Возможно создание объектов/итерирования для поиска/сортировки...
1
|
|
|
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
|
|
| 28.03.2014, 12:18 | |
|
+1 за Time Profiler - все покажет и расскажет, и не надо гадать )
1
|
|
|
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
|
||
| 28.03.2014, 15:46 [ТС] | ||
|
Спасибо всем за ответы!
Начал ковырять глубже Time Profiler'ом, увидел, что относительно много времени тратится на отрисовку фона ячейки, куда выводится буква. Поигрался с кнопкой, которая представляет собой ячейку, изменил тип кнопки с "System" на "Custom" и все стало хорошо)) Сейчас буду читать, почему этот параметр сыграл настолько большую роль.. Добавлено через 1 минуту Что вы имеете в виду под датасорсами кнопок? Я решил передавать своему менеджеру именно экземпляры UIButton, так как установка title для кнопки производится путем [button setTitle:forState:], где необходим доступ к самому объекту. Если есть другой метод, то расскажите вкратце, пожалуйста, буду вам благодарен!
0
|
||
| 28.03.2014, 15:46 | |
|
Помогаю со студенческими работами здесь
6
Разработать архитектуру классов иерархии товаров при разработке системы управления потоками товаров Вверх по иерархии классов Реляционная БД и иерархии классов
Цепочка иерархии классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор элементов справочника 1С по перечислениям
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|