gpt4 book ai didi

ios - 为什么不 ALAssetLibrary -enumerateGroupsWithTypes :usingBlock: "stop" when I tell it to?

转载 作者:可可西里 更新时间:2023-11-01 05:44:31 24 4
gpt4 key购买 nike

我注意到即使我将 *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/

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