gpt4 book ai didi

iphone - 如何在线程中执行 GUI 操作 - IOS

转载 作者:行者123 更新时间:2023-11-28 22:41:43 24 4
gpt4 key购买 nike

我有一个线程会调用我的许多接口(interface)函数。当它调用时我需要做一些 GUI 操作,因为我知道 GUI 需要在主线程中完成,现在我还在使用

            dispatch_async(dispatch_get_main_queue(), ^{
// Some method call...
});

它在大多数情况下工作正常,但我仍然在这里面临问题......例如......我的界面功能如下......

        void interface_fun(char *name, int user_id) {
dispatch_async(dispatch_get_main_queue(), ^{
gui_acton_with_name(name, user_id);
});
}

现在名称指针大部分时间我在调度调用中得到 nil(我想我在这里丢失数据),我尝试使用 performselectoronMainthread 方法..但我不知道如何将它与多个参数一起使用..

任何想法谢谢..

最佳答案

我将其作为答案发布,因为很难将其放入评论中,但如果您使用 performSelectorOnMainThread:withObject:waitUntilDone:,您可以将两位信息包装到字典中(或数组,但字典效果更好,因为您可以按名称访问信息):

NSDictionary *info = @{ @"name" : @(name), @"user_id", @(user_id) };
[self performSelectorOnMainThread:@selector(someMethod:) withObject:info waitUntilDone:NO];

然后在您的方法中(仅限 iOS 6,除非您恢复到老式 objectForKey:):

- (void) someMethod:(NSDictionary *) info
{
NSString *name = info[@"name"];
NSNumber *user_id = info[@"user_id"];

// unbox name and user_id if necessary
}

关于iphone - 如何在线程中执行 GUI 操作 - IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356828/

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