是否可以从后台线程访问[UIApplication sharedApplication]?

问题描述 投票:1回答:1

Objective-C工作期间,可能需要在某些后台线程中获取protectedDataAvailable状态。

- (BOOL) isProtected {
    BOOL protectedDataAvailable = [[UIApplication sharedApplication] isProtectedDataAvailable];
    return protectedDataAvailable;
}

当我访问[UIApplication sharedApplication]时,我怀疑代码块应在主队列中运行。 我该怎么做?

我正在考虑将其更改为,

- (BOOL) isProtected {

    BOOL protectedDataAvailable = NO;

    dispatch_sync(dispatch_get_main_queue(), ^{
        protectedDataAvailable = [[UIApplication sharedApplication] isProtectedDataAvailable];
    });

    return protectedDataAvailable;
}

问题1:代码是否应在主队列/ UI线程内运行?

问题2:如果是,我更改的代码能否解决问题?还是有更好的方法?

我问这个问题的原因是,即使我同时访问主队列]上的UIApplication,当从main thread调用该块时也会崩溃。我该如何解决这个问题?

在使用Objective-C时,我可能需要在某些后台线程中获取protectedDataAvailable状态。 -(BOOL)受保护{BOOL protectedDataAvailable = [[UIApplication ...

ios objective-c multithreading ui-thread
1个回答
1
投票

问题1:代码是否应在主队列/ UI线程内运行?

© www.soinside.com 2019 - 2024. All rights reserved.