У меня есть UIView с примерно 60 кнопками, которые вызывают один и тот же метод. При нажатии на кнопки я открываю разные изображения этим методом — я использую теги кнопок, чтобы знать, какая кнопка была вызвана и какое изображение отображать. Думайте об этом как о галерее.
Поскольку рисовать кнопки было сложно, я использовал для этого Interface Builder и создал XIB с этим UIView. Я просто перетаскивал кнопки в нужные места и подключал их к своему методу на событии TouchUpInside. Я использовал это, чтобы добавить вид к моему основному виду:
NSArray *xibContents = [[NSBundle mainBundle] loadNibNamed:@"Tour" owner:self options:nil];
UIView *tour = [xibContents lastObject];
[self.view addSubview:tour];
Пока все хорошо, на первый взгляд работает хорошо. К сожалению, есть некоторые проблемы, когда приложение используется в течение некоторого времени. Кнопки по-прежнему подсвечиваются (так что они все еще здесь!), но действие больше не вызывается. Там только подсветка, но никаких действий.
Я не знаю почему, но каким-то образом сборщик мусора, кажется, уничтожает цель UIButton. Почему? Как я могу это исправить?
Обратите внимание, что я не объявлял кнопки программно. Я думал, что разместить их в IB будет достаточно.
Также я не смог найти связи между предупреждениями о памяти и уничтожением целей UIButton. Предупреждения о памяти появляются в моем приложении, но в большинстве случаев кнопки все еще работают.
Но это должен быть сборщик мусора, потому что ошибка появляется совершенно случайно. Нет возможности воспроизвести эту ошибку, иногда это происходит после 5 кликов, иногда после 10 минут пребывания в моем приложении.