我正在开发一个图片库,它允许从 iPhone 中选择一些图片并显示它们。
关于这个画廊的一些解释:
- 安
UITableView
显示包含 iPhone 图片的不同目录 - 当用户点击这些目录之一时:显示
UICollectionView
使用所选目录中的不同图片 - 返回按钮返回
UITableView
- 用于在新页面中显示所选图像的“下一步”按钮。
这个图库是如何实现的:
- 对于在 iPhone 图片中找到的每个目录,存储
ALAssetsGroup
在NSMutableArray
命名目录数据 - 在
UITableView
中显示存储在 directoriesData 中的目录. - 当用户选择一个目录时:存储每个
ALAsset
包含在此目录中的NSMutableArray
名为 picturesData。 - 在
UICollectionView
中显示缩略图来自图片数据。 - 当用户选择一张图片时,它被存储在
NSMutableArray
的单例实例中。命名为 desiredPictures。 - 如果用户单击后退按钮,我会在显示
UITableView
之前从 picturesData 中删除所有对象.
现在的问题:
我的 iPhone 中有两个不同的图片目录。
目录A 目录B
我想在目录 A 中选择一张图片,在目录 B 中选择另一张。
选中它们后,我单击到下一页以显示它们。
新页面从 desiredPictures 加载图像。
但是当我想通过访问 ALAsset
来显示选定的图片时在目录 A 中,我有一个 EXC_BAD_ACCESS
.
在我的项目中进行一些测试和研究后,我发现如果我不从 picturesData 中删除对象(当我按下按钮返回时),我将不再有 EXC_BAD_ACCESS
。 .
但是,我需要清理 picturesData 的内容,因为当我填充 UICollectionView
时它来自图片数据。在我访问目录 A 然后访问目录 B 的情况下,我将在 UICollectionView
中拥有这两个目录的内容。 .
那么我怎样才能保留ALAsset
指针正确且干净的图片数据?
希望您了解我的项目和问题。
谢谢!
编辑:
回溯
* 线程 #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)<br/>
frame #0: 0x39764b26 libobjc.A.dylib
objc_msgSend + 6
第 1 帧:0x00195f1a MyProject -[Picture getFullImage](self=0x176ebb40, _cmd=0x005de393) + 310 at Picture.m:211<br/>
frame #2: 0x001959bc MyProject
-[Picture getCroppedImage](self=0x176ebb40, _cmd=0x005da2b4) + 68 at Picture.m:154
第 3 帧:0x001f9a82 MyProject __68-[ImageCropViewController sliderContentsAddContent:ToSlider:AtPage:]_block_invoke(.block_descriptor=0x17637000) + 50 at ImageCropViewController.m:1020<br/>
frame #4: 0x39c4cd1a libdispatch.dylib
_dispatch_call_block_and_release + 10
第 5 帧:0x39c53d70 libdispatch.dylib _dispatch_root_queue_drain + 220<br/>
frame #6: 0x39c53f58 libdispatch.dylib
_dispatch_worker_thread2 + 56
第 7 帧:0x39d8edbe libsystem_pthread.dylib`_pthread_wqthread + 298
最佳答案
关于ios - ALAsset 指针在访问时抛出 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21555089/