При работе с 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
это становится кр sh. Как я могу справиться с этой проблемой?