Форум программистов, компьютерный форум CyberForum.ru

Работа с UITextView - Objective-C

Восстановить пароль Регистрация
 
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
13.03.2014, 13:04     Работа с UITextView #1
Всем привет! Вчера открыл для себя интересную особенность которой сам не смог найти объяснения, посему и пишу ) При копировании большого текста в UITextView размер оперативной памяти растет в геометрической прогресиии)) Обнаружил подобную проблему в рабочем проекте, после долгих часов разбирательств в утечках , и затирании профайлера до дыр попробывал создать тестовое приложение. Приложение это просто window даже без единого контроллера в котором на весь экран ручками кинул UITextView.
Objective-C
1
2
3
4
5
6
 UITextView *textView = [[UITextView alloc] initWithFrame:self.window.bounds];
    textView.backgroundColor = [UIColor redColor];
    [self.window addSubview:textView];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
Так вот при запуске приложения вы видим красную область на весь экран как и ожидалось. Пишем текст любой в несколько десятков строк и потом выделяем его и копируем сюда же, подобные действия повторить n количество раз, выделяю все больше и больше текста. В результате можно догнать размер используемой памяти до предельного значения. На iphone 5 это 560 метров, после чего система убила приложение. Так вот буду очень признателен кто мне пояснит почему сколько то строк занимают 560 метров. Вероятно память где то не высвобождается при вставке текста. Проверял на проекте с ARC

Добавлено через 1 час 44 минуты
Ну неужели мы тут только про кнопочки говорить будем в этом форуму? (
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 13:04     Работа с UITextView
Посмотрите здесь:

Objective-C UITextView - неправильно отображает ввод
Objective-C Добавление строк в UITextView

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lexus_ilia
 Аватар для lexus_ilia
3045 / 920 / 34
Регистрация: 24.09.2008
Сообщений: 1,530
18.03.2014, 13:42     Работа с UITextView #2
Хм, если я вас правильно понял. Вы каждый раз копировали весь текст и вставляли его, правильно ? если так, то это удвоение памяти на каждую операцию. Ну допустим у вас был один символ в начале. Пусть он занимает 1 байт (на самом деле конечно больше из-за NSString класса, но допустим).
После десяти операций у вас выделено 512 байт , а на 20-ой операции 500 Кб. Пока что все нормально. Но если вы сделаете еще 10 операций, то получите уже 500 Мб выделенной памяти, что конечно приведет к падению приложения.
И я это все считал для одного начальноог байта и с учетом того, что каждый новый символ добавляет только по одному байту. Уточните ваши данные эксперимента, чтобы можно было более точно провести расчеты.
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
24.03.2014, 17:41  [ТС]     Работа с UITextView #3
ну не совсем так) это бага IOS если верить стековерфлоу) я вставляю всегда один и тот же текст а память увеличивается в мегабайты. Попробуйте сами , создайте тестовую апликаху на которой будет только один UITextView, напишите 4 строчки символов, скопируйте и вставляйте их постоянно. Обратите внимание на память
Yandex
Объявления
24.03.2014, 17:41     Работа с UITextView
Ответ Создать тему
Опции темы

Текущее время: 14:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru