gpt4 book ai didi

iphone - 方法调用乱序?

转载 作者:行者123 更新时间:2023-12-01 19:28:13 25 4
gpt4 key购买 nike

我有以下代码:

    [self.view bringSubviewToFront:loggingIn];
[self loginWithUsername:user Password:pw];

这是在按钮按下的 IBAction 方法中。该按钮保持突出显示,直到用户登录(这可能需要几秒钟),然后 View 出现。为什么在调用登录方法之前 View 没有出现?

最佳答案

约翰的回答会起作用,但它与运行循环有关,而不是阻塞线程。基本上,每当您的应用程序接收到诸如单击按钮之类的事件时,您的处理程序就会在主线程中运行。您对 UI 所做的任何更改都会在处理程序完成后发生。这让 Cocoa 通过一起分析/执行它们来优化图形更新。

Run Loop:
Event -> Your Handler Code -> System Updates UI

因此,在调用 loginWithUsername:Password: [sic] 方法之前,您需要让处理程序代码完成以让系统开始更新 UI。调度一个定时器会将它撞到运行循环的下一次迭代(定时器关闭成为触发下一个循环的“事件”)。所以,
Run Loop (2 iterations):
Mouse Click -> Your Handler Code (reorder views) -> System reorders views
Timer Fires -> Your Handler Code (trigger login) -> Any addl UI updates

所以做这样的事情:
- (void) buttonHandler: (id)sender {
[self.view bringSubviewToFront:loggingIn];
[self performSelector: @selector(performLogin)
withObject: [NSArray arrayWithObjects:user, pw, nil]
afterDelay: 0];
}

- (void) performLogin: (NSArray *)args {
[self loginWithUsername:[args objectAtIndex:0] Password:[args objectAtIndex:1]];
}

它不必是一个数组。您还可以将您的用户名和密码打包在字典中,并将其用作您的参数。

关于iphone - 方法调用乱序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5201463/

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