gpt4 book ai didi

objective-c - 具有回调方法的 IOS Grand Central Dispatch

转载 作者:可可西里 更新时间:2023-11-01 03:11:41 25 4
gpt4 key购买 nike

我没有在我的应用程序中使用 GCD 或太多线程,但我遇到过需要在另一个线程上运行一两个方法的情况。此方法完成后,我需要使用回调中的主线程调用另一个方法。我一直在四处寻找如何检测线程何时完成操作但仍然不太清楚这个问题。

我创建了一个测试应用程序,并使用了 viewDidLoad 方法作为一个快速示例。

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSLog(@"viewDidLoad called");
sleep(5); // simulating a thread being tied up for 5 seconds


dispatch_async(dispatch_get_main_queue(), ^{
[self callbackMethod]; // method called after above thread has completed running
});

});


}

此示例是否适用于我正在尝试做的事情?运行应用程序时,似乎在 sleep(5) 完成后调用了回调方法。这是处理这种情况的正确方法还是我偏离了方向?

最佳答案

你说对了;这是离开和进入主线程的标准模式。在这里查看我的答案:https://stackoverflow.com/a/13080519/341994

例如我书中的代码,以这种方式构建:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch25p868mandelbrotGCD/ch38p1106mandelbrotNoThreading/MyMandelbrotView.swift

在那个例子中,看看 drawThatPuppy 如何离开主线程进行耗时的计算,然后返回主线程在界面中绘制。

关于objective-c - 具有回调方法的 IOS Grand Central Dispatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115657/

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