gpt4 book ai didi

ios - 使用 NSBlockOperation 和 EKEventStore 时主线程卡住

转载 作者:行者123 更新时间:2023-11-29 02:45:45 26 4
gpt4 key购买 nike

我在使用 NSBlockOperation 并尝试访问 EKEventStore 时遇到问题。这是我的代码:

  • 这段代码异步运行

            NSBlockOperation *wordsOp = [NSBlockOperation blockOperationWithBlock:^{
    //call a syncronous call to get the words dictionary
    NSLog(@"Before Get Word with ID: %@",resourceID);
    NSDictionary *wordsDic = [self getWordsForResourceID:resourceID];
    NSLog(@"After Get Word with ID: %@",resourceID);

    }];
  • 此代码在主线程上运行

        return [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
  • 这是我的调试导航器:

enter image description here

顺便说一句:主线程将在 NSBlockOperation 完成后释放

最佳答案

我发现了问题。所以基本上我在 NSOperationQueue 中创建了很多 NSBlockOperation,这创建了很多线程。显然,当 EKEventStore 尝试 authorizationStatusForEntityType 时,他尝试在新线程中这样做并等待他完成。 (我们可以在信号量等待陷阱中看到这一点)。所以解决方案是限制 NSOperationQueue 中的操作数。这解决了问题。

关于ios - 使用 NSBlockOperation 和 EKEventStore 时主线程卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160352/

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