- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个基于 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 不允许在后台线程中获取(我正在运行一系列 NSOperations
在 NSOperationQueue
中)。我通过使用 performSelectorOnMainThread
创建一个小包装器解决了这个问题。
经过代码重构和升级到iOS 5后,我终于意识到问题实际上与ALAssetsLibrary的工作方式有关,不需要使用performSelectorOnMainThread
。 I wrote a post on it here .
关于iphone - ALAssetsLibrary 的 enumerateGroupsWithTypes :usingBlock:failureBlock: "broken" in iOS 4. 是 3.4 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6806493/
我正在尝试从用户选择的图像中读取 EXIF 数据。我为此使用 ALAssetLibrary。到目前为止,我已经设法获得了 assetForURL:resultBlock:failureBlock: 方
我正在开发一个基于 ALAssetsLibrary api(从 4.0 开始可用)的 iOS 应用程序,我用它来检索设备上保存的所有图像和视频,这非常简单。不管怎样,只要我在我的 iPhone 4 上
我是一名优秀的程序员,十分优秀!