gpt4 book ai didi

iphone - ALAssetsLibrary 的 enumerateGroupsWithTypes :usingBlock:failureBlock: "broken" in iOS 4. 是 3.4 吗?

转载 作者:可可西里 更新时间:2023-11-01 04:28:09 24 4
gpt4 key购买 nike

我正在开发一个基于 ALAssetsLibrary api(从 4.0 开始可用)的 iOS 应用程序,我用它来检索设备上保存的所有图像和视频,这非常简单。不管怎样,只要我在我的 iPhone 4 上安装了 iOS 4.3.4,我的代码就停止工作了。调用获取的行什么都不做!代码如下(在 iOS 4.3.3 上运行良好):

ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];

ALAssetsGroupEnumerationResultsBlock assetsEnumerator = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
// handle asset
};

ALAssetsLibraryGroupsEnumerationResultsBlock groupsEnumerator = ^(ALAssetsGroup *group, BOOL *stop) {
// handle group
};

ALAssetsLibraryAccessFailureBlock failHandler = ^(NSError *error) {
// handle error
};


[library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:groupsEnumerator failureBlock:failHandler];

似乎 enumerateGroupsWithTypes:usingBlock:failureBlock: 永远不会被调用,因为我的 block 都没有被执行...并且没有引发错误!为什么?我能做什么?

ps:我尝试更改“types”参数,但这不是问题所在!

最佳答案

我不明白为什么(Apple 在这一刻我恨你!),但是 iOS 4.3.4 中的 ALAssetsLibrary 不允许在后台线程中获取(我正在运行一系列 NSOperationsNSOperationQueue 中)。我通过使用 performSelectorOnMainThread 创建一个小包装器解决了这个问题。

编辑:

经过代码重构和升级到iOS 5后,我终于意识到问题实际上与ALAssetsLibrary的工作方式有关,不需要使用performSelectorOnMainThreadI wrote a post on it here .

关于iphone - ALAssetsLibrary 的 enumerateGroupsWithTypes :usingBlock:failureBlock: "broken" in iOS 4. 是 3.4 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6806493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com