【问题标题】:Access IBOutlet inside dispatch_async block在 dispatch_async 块中访问 IBOutlet
【发布时间】:2013-08-12 22:13:05
【问题描述】:

如果我在调度块内调用它不会隐藏标签:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //Here your non-main thread.
        [self.loading setHidden:NO];


        dispatch_async(dispatch_get_main_queue(), ^{
            //Here you returns to main thread.
            [self.loading setHidden:NO];
        });
    });

这可行,但仍然没有隐藏:

 [self.loading setHidden:NO];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //Here your non-main thread.



        dispatch_async(dispatch_get_main_queue(), ^{
            //Here you returns to main thread.
            [self.loading setHidden:NO];
        });
    });

如何访问块内的 IBOutlets?

【问题讨论】:

  • 第一个示例是不可取的,因为您正在尝试从后台队列更新 UI 元素。你的第二个例子(如果你setHidden:YES)更有希望。

标签: ios objective-c scope block


【解决方案1】:

您永远不会调用 setHidden:YES 来隐藏它。另外,你对界面做的任何事情,你都应该在主线程上做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多