Изменение размера шрифта в UITextView приводит к утечке памяти - PullRequest
1 голос
/ 20 апреля 2011

У меня есть ползунок, используемый для изменения размера шрифта текста в UITextView. Анализатор и утечки сообщают об отсутствии утечки памяти. Однако память увеличивается каждый раз, когда я меняю размер шрифта, перемещая ползунок. В конце концов приложение получает предупреждение о нехватке памяти. Код:

mainText.font = [UIFont systemFontOfSize:mainSlider.value];

Если я заменю этот код на mainText.font = [UIFont systemFontOfSize:40.0];, память останется прежней независимо от того, сколько раз я перемещаю ползунок. Я искал этот и многие другие сайты в поисках информации о возможной ошибке UIFont. Нет успеха Я вижу людей, использующих тот же код, который я использую, и не говоря уже об увеличении памяти. Пожалуйста, помогите.

1 Ответ

1 голос
/ 20 апреля 2011

Вероятно, имеется кэш шрифтов, чтобы избежать повторного создания одних и тех же шрифтов (немного похоже на [UIImage imageNamed: @ ""])

Это явно не указано в документации, но читается

Вы не создаете объекты UIFont, используя методы alloc и init.Вместо этого вы используете методы класса UIFont для поиска и получения нужного объекта шрифта.Эти методы проверяют существующий объект шрифта с указанными характеристиками и возвращают его, если он существует.В противном случае они создают новый объект шрифта на основе требуемых характеристик шрифта.

может заставить поверить, что существует кэш

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIFont_Class/Reference/Reference.html

Кроме того, чтоВы называете "предупреждение о нехватке памяти"?Я предполагаю, что это просто «уровень предупреждения о памяти = 1», а не сбой приложения из-за нехватки памяти?

...