Я новичок в Objective-C, и я пытаюсь создать приложение Springboard. Итак, я получил UIScrollView, в котором я создаю цикл для создания кучи подзаголовков из другого UIViewController.Добавление subviews с циклом в UIScrollView вызывает утечку памяти
Вот мой код:
@implementation ProjectsListViewController {
ProjectViewController *icon;
}
-
int row = 0;
int column = 0;
int page = 0;
for (int i = 0; i < 5; i++) {
icon = [[ProjectViewController alloc] init];
icon.iconPath = @"icon.png";
icon.iconTag = i;
int x = (1024 * page) + ((50 + (10 * column)) + (188 * column));
int y = (40 + (150 * row));
icon.view.frame = CGRectMake(x, y, icon.view.frame.size.width, icon.view.frame.size.height);
[self.scrollView addSubview:icon.view];
// Add a new page if we reach the end of one
if ((column == 4) && (row == 3)) {
row = 0;
column = 0;
page++;
// Add a new line if we reached last column
} else if (column == 4) {
column = 0;
row++;
// Add a column otherwise
} else {
column++;
}
}
Все эти вещи идет в методе viewDidLoad. Пока там, если я запустил приложение, все в порядке, значки есть. Но когда я хочу щелкнуть значок (есть кнопка IBAction на кнопке, чтобы перейти к другому представлению), мое приложение вылетает из-за возможных утечек памяти. Кажется, что больше нет ссылок на subviews.
Только решение, которое я нашел, это добавить каждый ProjectViewController внутри NSMutableArray. Таким образом, я могу нажать на значки и нажать другое представление.
Может ли кто-нибудь объяснить мне, что я делаю неправильно?
Извините, если это звучит noob для ваших ушей, я пытаюсь учиться!
Примечание: Я использую ARC.
Связано ли IBAction с ProjectViewController? Если это так, я думаю, что это проблема. Кроме того, работает ли ваше «единственное решение, которое я нашел», или это была ваша единственная идея? –
Вам необходимо предоставить трассировку стека. Утечка памяти не является источником сбоя (обычно) – Zepplock
Мне не хватает «addTarget» для каждого значка. Где вы это устанавливаете? –