访问时,ALAsset指针抛出EXC_BAD_ACCESS

时间:2014-02-04 14:24:29

标签: ios iphone objective-c alassetslibrary alasset

我正在开发一个图片库,允许从iPhone中选择一些图片并显示它们。

关于此画廊的一些解释:

  • UITableView显示包含iPhone图片的不同目录
  • 当用户点击其中一个目录时:显示包含所选目录中不同图片的UICollectionView
  • 返回按钮返回UITableView
  • 下一步按钮,在新页面中显示所选图像。

如何实施此图库:

  • 对于iPhone图片中的每个目录,将ALAssetsGroup存储在NSMutableArray名为directoriesData
  • UITableView
  • 中显示存储在directoriesData中的目录
  • 当用户选择一个目录时:将此目录中包含的ALAsset中的每个NSMutableArray存储在UICollectionView个命名的picturesData中。
  • 在picturesData。{/ li>的NSMutableArray中显示缩略图
  • 当用户选择图片时,它会存储在UITableView名为desiredPictures的单个实例中。
  • 如果用户点击后退按钮,我会在显示ALAsset之前从picturesData中删除所有对象。

现在出现问题:

我的iPhone中有两个不同的图片目录。

目录A. 目录B

我想在目录A中选择一张图片,在目录B中选择另一张图片。

选择它们后,我点击下一页显示它们。

新页面从desiredPictures加载图像。 但是,当我想通过访问目录A的EXC_BAD_ACCESS来显示所选图片时,我有一个EXC_BAD_ACCESS

在我的项目中经过一些测试和研究后,我发现如果我不从picturesData中删除对象(当我按下按钮时),我就不再有UICollectionView

但是,我需要清理picturesData的内容,因为当我从picturesData中填充UICollectionView时。如果我访问目录A然后访问目录B,我将获得ALAsset中两个目录的内容。

那么如何保持objc_msgSend + 6, queue = 'com.apple.root.high-priority, stop reason = EXC_BAD_ACCESS (code=1, address=0xc)
frame #0: 0x39764b26 libobjc.A.dylib
指针正确并清理pictureData?

我希望你理解我的项目和问题。

谢谢!

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

编辑:

回溯

*线程#29:tid = 0x599a6,0x39764b26 libobjc.A.dylib -[Picture getFullImage](self=0x176ebb40, _cmd=0x005de393) + 310 at Picture.m:211
frame #2: 0x001959bc MyProject
objc_msgSend + 6
    帧#1:0x00195f1a MyProject __68-[ImageCropViewController sliderContentsAddContent:ToSlider:AtPage:]_block_invoke(.block_descriptor=0x17637000) + 50 at ImageCropViewController.m:1020
frame #4: 0x39c4cd1a libdispatch.dylib
- [Picture getCroppedImage](自= 0x176ebb40,_cmd = 0x005da2b4)+ 68在Picture.m:154
    帧#3:0x001f9a82 MyProject _dispatch_root_queue_drain + 220
frame #6: 0x39c53f58 libdispatch.dylib
_ dispatch_call_block_and_release + 10
    帧#5:0x39c53d70 libdispatch.dylib {{1}} _ dispatch_worker_thread2 + 56
    第7帧:0x39d8edbe libsystem_pthread.dylib`_pthread_wqthread + 298

1 个答案:

答案 0 :(得分:0)

Apple提供了一种干净的方式来实现您想要实现的目标。

以下是示例代码:MyImagePicker

并尝试分析代码,看看他们在做什么。