我的问题是我正在使用dispatch_async(dispatch_get_main_queue(), ^(void) { ... });
异步调用方法,在此方法中,根据某些条件我将布尔值设置为YES
. 当在这个方法中读取这个布尔值时,它总是被它的旧值读取,即NO
.
奇怪的是,当我在检查 bool 的行上设置断点时,一切都按预期进行!
编辑:这是产生线程的代码
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;
} );
}
}