gpt4 book ai didi

ios - 延迟更新UI

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:52 29 4
gpt4 key购买 nike

我有这样的情况:我从 API 获取数据,这些数据很快就会出现。当我将它们推送到 NSLogs 中时,一旦我请求它们就在那里。之后,我解析它们(从 JSON)并尝试设置 UILabel 或 UIImageView 等控件(如果是图像)。我想我检查了数据推送到最后一点的时间延迟 - 我的意思是我试图在方法中获取 NSLog,在其中获取数据,在其中解析等,最后在 UILabel 的子类中的方法 setText 中。

有什么问题? NSLogs 中的内容很快就会出现,但 UI 中的内容会在... 10-20 秒后更新。 !!可能是什么原因?

一段示例代码

{
[[contentView movieTitle] setText:movieTitle];
[[contentView movieYear] setText:movieYear];
[[contentView movieGenres] setText:movieGenres];
[[contentView movieDuration] setText:movieTime];
[[contentView movieDescription] setText:movieDescription];
[[contentView movieStarringName] setText:movieStarring];
[[contentView movieDirectorName] setText:movieDirector];

NSLog(@"--- %@", [contentView movieTitle].text);
}

这个 NSLog 会在一秒钟内出现,但是 UI 中的 [contentView movieTitle] 在 10-20 秒后会自行更改。

我异步请求数据。contentView 或 movieTitle、movieGenres 等所有属性都是(非原子的,保留的)。

最佳答案

您可能会在后台线程中进行 UI 更新(您从网络服务获取返回值或解析 JSON)。为了及时更新您的 UI(并且不至于使应用程序崩溃),请在主线程中进行更新。这可以通过几种方式完成。最简单的(至少对我而言)是调用 dispatch_async

    dispatch_async(dispatch_get_main_queue(), ^{
[[contentView movieTitle] setText:movieTitle];
[[contentView movieYear] setText:movieYear];
[[contentView movieGenres] setText:movieGenres];
[[contentView movieDuration] setText:movieTime];
[[contentView movieDescription] setText:movieDescription];
[[contentView movieStarringName] setText:movieStarring];
[[contentView movieDirectorName] setText:movieDirector];
});

关于ios - 延迟更新UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21207238/

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