Является ли «создать, затем выпустить, затем заново создать, затем выпустить» лучше, чем «создать, затем использовать дважды, затем выпустить»? - PullRequest
0 голосов
/ 22 февраля 2010

Предположим, у вас есть табличное представление, которое вы можете обновить. Будете ли вы хранить ActivityAnimator в памяти или пересоздавать его каждый раз, когда нажимаете кнопку «Обновить»?

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

Но мне было интересно, был ли один из них ближе к "стандартам Apple".

Какой из них важнее? Использование процессора или использование памяти?

И не говори мне, что это зависит от того, что мне нужно сделать.

Ответы [ 3 ]

0 голосов
/ 22 февраля 2010

Под "ActivityAnimator" я предполагаю, что вы имеете в виду UIActivityIndicatorView.

Если это так, вы должны добавить индикатор через Interface Builder и подключить его к вашему контроллеру представления. Это означает, что если контроллер не самый верхний, ОС может освободить подключенные объекты, включая индикатор, если это необходимо. Это также означает, что вам не нужно создавать и уничтожать его каждый раз, когда вы его используете. Лучшее из обоих миров.

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

0 голосов
/ 22 февраля 2010

Создайте метод, который будет создавать и возвращать ActivityAnimator.Это должно проверить, является ли его ноль, и если это создает это.Если не просто вернуть существующее.Затем вы можете сохранить его и освободить его только на dealloc этого viewController или, если didRecieveMemoryWarning.Затем, когда вам понадобится использовать его вместо ссылки на ссылку на класс, вызовите ваш метод, чтобы убедиться, что ссылка задана.Таким образом, вы получите лучшую производительность, но не столкнетесь с проблемами с памятью.

0 голосов
/ 22 февраля 2010

Я не думаю, что существуют "стандарты Apple".

Однако я думаю, что лучший способ - это сохранить ваш объект в памяти, потому что это позволяет приложению повысить производительность. Если приложению требуется память, ОС вызовет метод didReceiveMemoryWarning, и вам придется освободить неиспользуемый объект в это время.

Но если у вас много объектов, неплохо было бы время от времени выпускать некоторые объекты.

Если вам нужна дополнительная информация, см. Руководство по программированию управления памятью для какао

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...