Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
smth
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
#1

Не освобождается память после unwind segue

18.03.2016, 21:12. Просмотров 564. Ответов 2

Здравствуйте! Объясните, пожалуйста, как правильно решить следующую проблему:

Есть тестовое приложение с двумя экранами
UINavigationController --> Экран 1 (UIViewController) --(show)--> Экран 2 (UITableViewController)

На экране 1 всего одна кнопка (для перехода на экран 2), т.е. при запуске приложения памяти используется по-минимуму. На экране 2 - таблица из 10 строк (создаются с помощью PrototypeCell), в каждой ячейке одно и тоже - UIStackView с тремя UIImageView (StackView просто для удобства кинул). Картинки грузятся из "MainBundle" программы (в реальном приложении - с сервера, но характер проблемы от этого не меняется). После появления второго экрана использование памяти взлетает до +-140МБ (в приложенном примере). Картинки добавляются без уменьшения, чтобы использование памяти было более заметным. По нажатию на кнопку "Назад" в строке навигации экран 2 пропадает и возвращается экран 1. По идее (как я всегда понимал Navigation Stack), если не накосячить со strong ссылками, все локальные объекты, используемые экраном 2, должны освобождаться ARC. Тем не менее, после исчезновения экрана 2 используемая память все также остается равна +-140МБ. Через Instruments я вижу, что память выделена картинкам, но как ее очистить - не пойму.

Код создания ячейки таблицы:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    
    UIStackView *stv = [cell viewWithTag:101];
    
    UIImageView *v1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img1.jpg"]];
    [v1.heightAnchor constraintEqualToConstant:60].active = true;
    [v1.widthAnchor constraintEqualToConstant:60].active = true;
    [stv addArrangedSubview:v1];
    
    UIImageView *v2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img2.jpg"]];
    [v2.heightAnchor constraintEqualToConstant:60].active = true;
    [v2.widthAnchor constraintEqualToConstant:60].active = true;
    [stv addArrangedSubview:v2];
    
    UIImageView *v3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img3.jpg"]];
    [v3.heightAnchor constraintEqualToConstant:60].active = true;
    [v3.widthAnchor constraintEqualToConstant:60].active = true;
    [stv addArrangedSubview:v3];
    
    return cell;
}
Во вложении рабочий пример (XCode 7.2.1, iOS 9)
0
Вложения
Тип файла: zip test.zip (6.65 Мб, 1 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2016, 21:12
Ответы с готовыми решениями:

Segue
Здравствуйте! Возникла проблема Есть TableViewController , при выборе ячейки...

Переход по segue
Имеется 3 ViewController соединенные последовательно. Нужно, чтобы при одном...

Передача данных segue
Доброго времени! Вобщем то вопрос в теме. Гугл не смог решить мою задачу Вот...

Два segue, Два viewController, Одно отображение
Добрый день! Изучаю работу c segue - и столкнулся с проблемой. Какая стоит...

После Set Exl = Nothing память не освобождается
В ProjectReferences отметил MS Excel 8.0 object library, создал процедуру ...

2
cin_cout
27 / 27 / 7
Регистрация: 06.10.2012
Сообщений: 130
18.03.2016, 23:28 #2
Тут ответ:
https://developer.apple.com/library/...atingData.html
0
smth
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
19.03.2016, 14:12  [ТС] #3
cin_cout, я не отношусь к тому типу людей, которые лезут писать вопрос, не пытаясь разобраться самостоятельно. Материалы по приведенной ссылке никаким образом не связаны с решением проблемы в примере.

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

Если модераторы посчитают нужным, тему можно удалять, хотя, кому-то приведенная мной ссылка может сэкономить несколько часов гугления по ошибочным направлениям.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2016, 14:12

Медленно освобождается память после закрытия источника данных
Есть класс-обертка на несколько коллешенов. используется для построения дерева,...

Оперативная память не освобождается после обслуживания MSSQL 2008 R2
Доброго...! Проблема в следующем. Установлена WS2008R2 х64 + MSSQL 2008 R2 +...

Освобождается ли память выделенная под список и массив после завершения работы метода?
Вопрос по механике .Net. Есть статический метод. В методе происходит...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru