Указатель ALAsset выдает EXC_BAD_ACCESS при доступе к нему

Я разрабатываю галерею изображений, которая позволяет выбирать некоторые изображения с iPhone и отображать их.

Некоторые пояснения к этой галерее:

  • UITableView отображает различные каталоги, содержащие изображения iPhone.
  • Когда пользователь нажимает на один из этих каталогов: Отображает UICollectionView с различными изображениями из выбранного каталога.
  • Кнопка «Назад», чтобы вернуться к UITableView
  • Кнопка «Далее» для отображения выбранных изображений на новой странице.

Как реализована эта галерея:

  • Для каждого каталога, найденного на изображениях iPhone, сохраните ALAssetsGroup в NSMutableArray именованном каталогеData.
  • Отобразите каталоги, хранящиеся в каталогахДанные в файле UITableView.
  • Когда пользователь выбирает один каталог: Сохраните каждый из ALAsset, содержащихся в этом каталоге, в файле NSMutableArray с именем imagesData.
  • Отображать миниатюры в UICollectionView из imagesData.
  • Когда пользователь выбирает изображение, оно сохраняется в единственном экземпляре NSMutableArray с именем requiredPictures.
  • Если пользователь нажимает кнопку «Назад», я удаляю все объекты из imagesData перед отображением файла UITableView.

Теперь проблема:

У меня есть два разных каталога изображений в моем iPhone.

Каталог А Каталог Б

Я хочу выбрать одно изображение в каталоге A и еще одно в каталоге B.

После их выбора я нажимаю на следующую страницу, чтобы отобразить их.

Новая страница загружает изображения из требуемых картинок. Но когда я хочу отобразить выбранные изображения, обратившись к ALAsset каталога A, у меня есть EXC_BAD_ACCESS.

После некоторых тестов и исследований в моем проекте я обнаружил, что если я не удаляю объекты из imagesData (когда я нажимаю кнопку назад), у меня больше нет EXC_BAD_ACCESS.

Но мне нужно очистить содержимое pictureData, потому что, когда я заполняю свой UICollectionView, он из imagesData. И в случае доступа к каталогу A, а затем к каталогу B, у меня будет содержимое двух каталогов в файле UICollectionView.

Итак, как я могу сохранить правильный указатель ALAsset и очистить данные изображения?

Надеюсь, вы понимаете мой проект и проблему.

Спасибо !

http://img11.hostingpics.net/pics/581536photo.jpg

Редактировать:

Обратный след

* thread #29: tid = 0x599a6, 0x39764b26 libobjc.A.dylibobjc_msgSend + 6, queue = 'com.apple.root.high-priority, stop reason = EXC_BAD_ACCESS (code=1, address=0xc)
frame #0: 0x39764b26 libobjc.A.dylib
objc_msgSend + 6
frame #1: 0x00195f1a MyProject-[Picture getFullImage](self=0x176ebb40, _cmd=0x005de393) + 310 at Picture.m:211
frame #2: 0x001959bc MyProject
-[Picture getCroppedImage](self=0x176ebb40, _cmd=0x005da2b4) + 68 at Picture 154
кадр № 3: 0x001f9a82 MyProject__68-[ImageCropViewController sliderContentsAddContent:ToSlider:AtPage:]_block_invoke(.block_descriptor=0x17637000) + 50 at ImageCropViewController.m:1020
frame #4: 0x39c4cd1a libdispatch.dylib
_dispatch_call_block_and_release + 10
кадр № 5: 0x39c53d70 libdispatch.dylib_dispatch_root_queue_drain + 220
frame #6: 0x39c53f58 libdispatch.dylib
_dispatch_worker_thread2 + 56
кадр № 7: 0x39d8edbe libsystem_pthread.dylib`_pthread_29thread_wq8thread


person Jean Lebrument    schedule 04.02.2014    source источник
comment
Какой? вы храните все изображения в NSMutableArray?   -  person Ajay    schedule 04.02.2014
comment
Когда пользователь выбирает каталог на первой странице, я сохраняю весь ALAsset (изображение) выбранного каталога в NSMutableArray. И я использую этот NSMutableArray для заполнения UICollectionView.   -  person Jean Lebrument    schedule 04.02.2014
comment
Показать сообщение об исключении и полную трассировку стека.   -  person Wain    schedule 04.02.2014
comment
Прежде всего, вы не должны хранить изображения в массиве, вы делаете это неправильно. Bcz позже это создаст давление памяти.   -  person Ajay    schedule 04.02.2014
comment
Я просто добавляю обратную трассировку в свой первый пост   -  person Jean Lebrument    schedule 04.02.2014


Ответы (1)


Apple предоставила простой способ сделать то, чего вы пытаетесь достичь.

Вот пример кода: MyImagePicker

и попробуйте проанализировать код и посмотреть, что они делают.!

person Ajay    schedule 04.02.2014
comment
Спасибо за ответ. В MyImagePicker разработчики также используют NSMutableArray для хранения каталогов и изображений для нужных каталогов. Я делаю то же самое в своем проекте. - person Jean Lebrument; 04.02.2014
comment
Но вы должны хранить только URL-адрес актива, а не все изображение. В противном случае вы скоро получите предупреждение о памяти.!! - person Ajay; 04.02.2014
comment
Когда вы говорите об URL-адресе актива, вы говорите обо всем объекте ALAsset или myALAssetObject.defaultRepresentation.url? - person Jean Lebrument; 04.02.2014
comment
Я имею в виду весь объект ALAsset. - person Ajay; 04.02.2014
comment
Да, это то, что я храню. Не имидж конечно. - person Jean Lebrument; 04.02.2014