Я разрабатываю галерею изображений, которая позволяет выбирать некоторые изображения с iPhone и отображать их.ALAsset pointer throw EXC_BAD_ACCESS при доступе к нему
Некоторые пояснения об этой галереи:
UITableView
отображает различные каталоги, содержащие изображения картинки- Когда пользователь нажимает на одну из этих каталогов: отображение в
UICollectionView
с различными картинами из выбранного каталога - Обратно, чтобы вернуться к
UITableView
- Следующая кнопка для отображения выбранных изображений на новой странице.
Как реализуется эта галерея:
- Для каждого найденных каталогов в iPhone фотографии, хранить
ALAssetsGroup
в качествеNSMutableArray
имени directoriesData - Показать каталоги хранятся в directoriesData в
UITableView
. - Когда пользователь выбирает один каталог: храните каждый из
ALAsset
, содержащийся в этом каталоге, в файлес именем picturesData. - Показать миниатюры в формате
UICollectionView
от picturesData. - Когда пользователь выбирает изображение, он сохраняется в одном экземпляре
NSMutableArray
с именем wishPictures. - Если пользователь нажмет на кнопку «Назад», я удаляю все объекты из изображенийData перед отображением
UITableView
.
Теперь проблема:
У меня есть две различные каталоги фотографий в моем iPhone.
Каталог Каталог B
Я хочу, чтобы выбрать одну фотографию в каталоге A и один другой в каталоге B.
После выбора их, я нажимаю на следующей странице, чтобы отобразить их.
Новая страница загружает изображения из требуемых изображений. Но когда я хочу отобразить выбранные изображения, обратившись к ALAsset
Справочника А, у меня есть EXC_BAD_ACCESS
.
После некоторых испытаний и исследований в моем проекте я обнаружил, что если я не удалю объекты из изображенийData (когда я нажимаю кнопку назад), у меня больше нет EXC_BAD_ACCESS
.
Но, мне нужно очистить содержимое изображений, потому что, когда я заполняю свой UICollectionView
, это из изображений. И в случае доступа к каталогу A, а затем в каталог B, у меня будет содержимое двух каталогов в UICollectionView
.
Так как я могу сохранить ALAsset
указатель правильный и чистый pictureData?
Надеюсь, вы понимаете мой проект и проблему.
Спасибо!
Редактировать:
Backtrace
* нить # 29: TID = 0x599a6, 0x39764b26 libobjc.A.dylib objc_msgSend + 6, queue = 'com.apple.root.high-priority, stop reason = EXC_BAD_ACCESS (code=1, address=0xc)
objc_msgSend + 6
frame #0: 0x39764b26 libobjc.A.dylib
кадр # 1: 0x00195f1a MyProject -[Picture getFullImage](self=0x176ebb40, _cmd=0x005de393) + 310 at Picture.m:211
- [Picture getCroppedImage] (self = 0x176ebb40, _cmd = 0x005da2b4) + 68 at Picture.m: 154
frame #2: 0x001959bc MyProject
frame # 3: 0x001f9a82 MyProject __68-[ImageCropViewController sliderContentsAddContent:ToSlider:AtPage:]_block_invoke(.block_descriptor=0x17637000) + 50 at ImageCropViewController.m:1020
_dispatch_call_block_and_release + 10
frame #4: 0x39c4cd1a libdispatch.dylib
кадр # 5: 0x39c53d70 libdispatch.dylib _dispatch_root_queue_drain + 220
_dispatch_worker_thread2 + 56
frame #6: 0x39c53f58 libdispatch.dylib
кадр # 7: 0x39d8edbe libsystem_pthread.dylib`_pthread_wqthread + 298
Что? вы сохраняете все изображения в NSMutableArray? – Ajay
Когда пользователь выбирает каталог на первой странице, я сохраняю все ALAsset (изображение) выбранного каталога в NSMutableArray. И я использую этот NSMutableArray для заполнения UICollectionView. –
Показать сообщение об исключении и полную трассировку стека. – Wain