【问题标题】:How to get photos from camera roll?如何从相机胶卷中获取照片?
【发布时间】:2011-11-26 21:19:04
【问题描述】:

我尝试使用 ALAssetLibrary 来获取相册和照片。这是我的代码:

void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 如果(结果!= NULL){ NSLog(@"查看资产:%@", 结果); } }; void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) { 如果(组!=零){ [组 enumerateAssetsUsingBlock:assetEnumerator]; } }; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [库枚举GroupsWithTypes:ALAssetsGroupAll usingBlock:assetGroupEnumerator 失败块:^(NSError *error) { NSLog(@"失败"); }];

我在 [group enumarateAssetsUsingBlock:assetEnumerator] 上获得了 exc_bad_access,并且该组不为零。

奇怪的是,如果我创建一个新项目,这段代码可以正常工作,但在我的旧项目中它不工作。

SDK 版本为 iOS 4.3

在 iPhoneSimulator 4.3 上测试

谁能告诉我发生了什么?

谢谢。

【问题讨论】:

    标签: iphone ios exc-bad-access alassetslibrary


    【解决方案1】:

    当您在一个项目上崩溃但在另一个项目上没有崩溃时,您确定设置和配置合适吗?

    特别是:

    • 检查 TARGET_DEPLOYMENT_OS 是否设置为 ALAsset 框架可用的最低版本。
    • 检查您是否包含了所有请求的框架(即使如果您忘记包含它,链接器也会发出警告)

    此外,崩溃的详细信息(崩溃日志、异常详细信息等)会有所帮助。

    您还确定 ALAssetLibrary 在枚举(可能是异步完成)结束之前没有发布吗?您的问题中的代码中没有release,但您的真实代码中可能有一个?

    AFAIK,enumerateGroupsWithTypes: 以异步方式在辅助线程上执行其块(请参阅this other question on SO),所以这可能是您的问题(您尝试使用自开始枚举以来已从内存中释放的组,您必须确保 ALAssetLibrary 仍在内存中,直到枚举完成)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2014-11-02
      相关资源
      最近更新 更多