- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我注意到即使我将 *stop
BOOL
指针设置为 YES
,我的枚举 block 也会被执行两次。我以为设置 *stop = YES
会在第一个之后停止?
[lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
NSLog(@"Enumerating a group");
//should stop after first?
*stop = YES;
} failureBlock:^(NSError *error) {
}];
日志:
2014-03-05 12:27:29:363 AppName[3625:1547] Enumerating a group
2014-03-05 12:27:29:379 AppName[3625:1547] Enumerating a group
从文档看,-enumerateGroupsWithTypes:usingBlock:
是异步的,但它是不是也自动并行化了?两个枚举都发生在主线程上,所以也许我应该强制停止?如果未按照文档建议的方式严格执行,则提供 stop
似乎很奇怪。
编辑
就其值(value)而言,我添加了自己的强制执行并且它有效。但为什么我需要这样做?
__block BOOL stopItForReal = NO; [lib enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { NSLog(@"Enumerating a group"); //does not stop enumeration *stop = YES; //actually stops enumeration. I win, runtime! if (stopItForReal) return; stopItForReal = YES; } failureBlock:^(NSError *error) { }];
最佳答案
当组枚举终止时,ALAssetsLibraryGroupsEnumerationResultsBlock
被调用,group = nil
。所以你可以这样写:
if (group != nil)
{
// your code.
}
关于ios - 为什么不 ALAssetLibrary -enumerateGroupsWithTypes :usingBlock: "stop" when I tell it to?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208655/
我正在使用 [assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:fail
我正在使用以下代码遍历 eh albums,如果它找到我需要的那个,它应该停止进一步循环。 public func importPhotosFromGallery(albumName: String
我正在使用 AssetsLibrary 框架来检索 iPhone 中的所有 Assets 组。我有一些这样的代码片段: NSMutableArray *groups = [[NSMutableArra
我正在使用 [ALAssetsLibrary enumerateGroupsWithTypes:] 将 ALAsset 存储在数组中。由于这是一个异步操作,我需要等待它完成才能继续我的工作。 我读到C
在 iOS 4.x 上,我尝试枚举设备上的所有照片,当枚举完成后,再用相同的方法进一步处理该列表。 由于 enumerateGroupsWithTypes 的 block 在另一个线程上异步运行,我看
我尝试使用 ALAssetsLibrary 类的 enumerateGroupsWithTypes 方法,但第一个参数出现错误。 方法原型(prototype): func enumerateGrou
照片流组在过滤视频时返回计数 0。这是要重现的代码: ALAssetsGroupType groupTypes = ALAssetsGroupPhotoStream; ALAssetsFilter*
我注意到即使我将 *stop BOOL 指针设置为 YES,我的枚举 block 也会被执行两次。我以为设置 *stop = YES 会在第一个之后停止? [lib enumerateGroupsWi
我最近和一些人一样,发现[ALAssetsLibrary enumerateGroupsWithTypes] 喜欢在另一个线程上运行它的 block 。苹果没有记录这一点真是太可惜了:-) 在我目前的
今天我将 Xcode 6 升级到 beta 5(从 beta 1),你可以想象我发现我以前运行完美的 Swift 应用程序充满了各种错误(嗯,从 beta 1 开始有很多变化)。在所有错误中,有一个我
我正在开发一个基于 ALAssetsLibrary api(从 4.0 开始可用)的 iOS 应用程序,我用它来检索设备上保存的所有图像和视频,这非常简单。不管怎样,只要我在我的 iPhone 4 上
我是一名优秀的程序员,十分优秀!