У меня есть класс, который имитирует поведение UIImagePickerController
, за исключением некоторых тонких различий.В моем классе я использую только один контроллер представления и использую его, чтобы поменять местами просмотр таблиц альбомов и фотографий, когда пользователь делает выбор строки / эскиза.Таким образом, последовательность событий, которая вызывает у меня проблемы, выглядит следующим образом:
- Я выбираю альбом
- Загружается просмотр таблицы фотографий, и я нажимаю кнопку "Назад", чтобы вернуться к альбомам.tableview
- Альбомы загружаются при просмотре таблицы
- Я выбираю альбом, и теперь возникает ошибка доступа к памяти
Я реализовал оба представления таблицы и массив в ivarsследующим образом:
@property (nonatomic, retain) UITableView *selectAnAlbumTableView, *selectAPhotoTableView;
@property (nonatomic, retain) NSMutableArray *albums, *photos;
@property (nonatomic, retain) ALAssetsGroup *album;
@property (nonatomic, retain) UIActivityIndicatorView *spinner;
Одно из различий между представлением таблицы альбомов и представлением таблицы фотографий состоит в том, что просмотр таблицы фотографий воссоздается каждый раз, когда пользователь выбирает альбом, и именно здесь возникает ошибка.Первоначально "EXC_BAD_ACCESS" происходило, когда я удалял представление таблицы, как я делаю здесь:
[[self selectAPhotoTableView] removeFromSuperview];
[selectAPhotoTableView release];
selectAPhotoTableView = nil;
[photos release];
photos = nil;
Я заметил, что ошибка происходит в [photos release]
.Фотографии - это массив, в котором я храню все кнопки миниатюр, которые помещаются в ячейки на табличном представлении фотографий.Если я удаляю [photos release]
и photos = nil, тогда проблема возникает при фактическом создании табличного представления (как я уже упоминал вначале):
NSMutableArray *photosTemp = [[NSMutableArray alloc] init];
[self setPhotos: photosTemp];
[photosTemp release];
Теперь после EXC_BAD_ACCESS выдается «EXC_BAD_ACCESS»линия.Кто-нибудь знает, что я здесь не так делаю?
ОБНОВЛЕНИЕ: Я поставил неправильный код, где ошибка возникает во второй раз, теперь она исправлена.