私の問題はdispatch_async(dispatch_get_main_queue(), ^(void) { ... });
、メソッドを非同期的に呼び出すために使用していることです。このメソッドでは、いくつかの条件に応じて、ブール値をに設定しYES
ます。このブール値がこのメソッドで読み取られると、常に古い値である。によって読み取られNO
ます。
奇妙なことに、ブール値がチェックされている行にブレークポイントを作成すると、すべてが正常に実行され、意図したとおりになりました。
編集:これはスレッドが生成されるコードです
dispatch_async(dispatch_get_main_queue(), ^(void) {
[self drawFaceBoxesForFeatures:features forVideoBox:claporientation:curDeviceOrientation image:img];
});
メソッド自体
- (void)drawFaceBoxesForFeatures:(NSArray *)features forVideoBox:(CGRect)clap orientation: (UIDeviceOrientation)orientation image:(UIImage *)image;
{
if (![self getSendingRequestStatus]) {
NSLog(@"Sending req");
// send async request
dispatch_async(dispatch_get_main_queue(),^ {
sendingRequest = YES;
} );
}
}