Во время работы над 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. Следует ли выполнять код внутри основной очереди/потока пользовательского интерфейса?
Вопрос 2. Если да, решит ли мой измененный код проблему? или есть лучший подход?
Причина, по которой я задаю этот вопрос, заключается в том, что даже если я обращаюсь к UIApplication
в основной очереди синхронно, когда блок вызывается из main thread
, происходит сбой. Как я могу справиться с этой проблемой?