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

Objective-C

Войти
Регистрация
Восстановить пароль
 
smth
177 / 46 / 6
Регистрация: 23.06.2011
Сообщений: 248
#1

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

18.03.2016, 21:12. Просмотров 469. Ответов 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 Мб, 0 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2016, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не освобождается память после unwind segue (Objective-C):

Segue - Программирование iOS
Здравствуйте! Возникла проблема Есть TableViewController , при выборе ячейки переходим по segue на другой ViewController, на этом...

Переход по segue - Программирование iOS
Имеется 3 ViewController соединенные последовательно. Нужно, чтобы при одном условии осуществлялся переход из первого 1 ко 2...

Передача данных segue - Objective-C
Доброго времени! Вобщем то вопрос в теме. Гугл не смог решить мою задачу Вот мои жалкие попытки) if () { ...

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

После Set Exl = Nothing память не освобождается - Visual Basic
В ProjectReferences отметил MS Excel 8.0 object library, создал процедуру Public Sub TableStatist(Active As Integer, AllOff As...

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

2
cin_cout
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119
18.03.2016, 23:28 #2
Тут ответ:
https://developer.apple.com/library/...atingData.html
0
smth
177 / 46 / 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 - SQL Server
Доброго...! Проблема в следующем. Установлена WS2008R2 х64 + MSSQL 2008 R2 + сервер 1С 8.3 УТ 10.3 (база примерно 17Гб). Поднята терминалка...

Освобождается ли память выделенная под список и массив после завершения работы метода? - C#
Вопрос по механике .Net. Есть статический метод. В методе происходит инициализация и создание списка List<myClass> оператором new. Список...

Освобождается ли память? - C++
Под вводимое с клавиатуры количество переменных выделяется память. Затем переменным в цикле присваивается значение. int units, *x; ...

Не освобождается память - C++
Мне надо сделать прогу,точнее переделать, с использованием динамического двумерного массива... Я не буду писать эту прогу в изночальном...


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

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

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