gpt4 book ai didi

objective-c - 等待另一个对象完成工作后关闭警报 View

转载 作者:行者123 更新时间:2023-12-01 19:26:31 27 4
gpt4 key购买 nike

我有一个 View Controller ,我们称之为 HomeViewController ,弹出一个警报 View ,没有任何按钮显示“请稍候,同时连接到服务器”。在等待时, View Controller 调用另一个类 (ServerConnection) 中的方法,将数据发送到服务器。

我需要做的是在收到服务器响应后取消该警报,但如果我执行以下操作,它将不起作用:

HomeViewController *hvc = [[HomeViewController alloc] init];
[hvc waitAlertCancel];

//note:waitAlertCancel is a method that calls the following line of code:
[waitAlert dismissWithClickedButtonIndex:0 animated:TRUE];

我应该怎么做才能从另一个类(class)取消该警报 View ?

最佳答案

积木棒极了。

如果需要在事件发生后从另一个类调用一个类中的代码,blocks是完美的解决方案。在 block 可用之前,您通常会使用委托(delegate)模式来处理这样的设计,这很好,但在您只需要解除警报的情况下,它可能会变得笨拙。因此,IMO 使用 block 是一种更清洁的解决方案。

在您的 ServerConnection 中创建一个方法使用 block 进行回调的类。类似的东西
- (void) connectWithCompletionBlock(void(^))completionBlock;
然后你会调用connectWithCompletionBlock:像这样的方法:
[myServerConnection connectWithCompletionBlock: ^ { [waitAlert dismissWithClickedButtonIndex:0 animated:TRUE]; }];
一旦ServerConnection对象接收服务器响应,您可以让它运行完成 block 。

关于objective-c - 等待另一个对象完成工作后关闭警报 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7164068/

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