一句话回答
告诉编译器,这个变量 a 随时会改变,别把跟它相关的计算操作优化掉了,不然会出问题的。编译器就只能乖乖地在做完全部计算工作,在计算需要 a 时,永远会读取它当前的数值。
@implementation SomeObject {
volatile bool done; // 使用 volatile 关键字
}
- (void)someMethod {
done = false;
// 开启了一些子线程去执行任务,完成后将 done 设置为 true
// 如果子线程任务没执行完,会进入这个循环等待
while (!done) {
// 10ms 后检查一遍
[[NSRunLoop currentRunLoop]
runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]
];
}
}
@end