以下のサンプルコードがあります。iOS 10 while(YES)never break
- (void)method1
{
breakFlag = NO;
[self performSelectorInBackground:@selector(method2) withObject:nil];
while (YES) {
if (breakFlag) {
break;
}
}
NSLog(@"End method1");
}
- (void)method2
{
for (int i = 0; i < 10000; i++) {
NSLog(@"value of i; %d", i);
}
breakFlag = YES;
NSLog(@"End method2");
}
私は
[self performSelectorInBackground:@selector(method1) withObject:nil];
breakFlagが可変のインスタンスであるとviewDidAppear
から法1と呼ばれます。
なぜメソッド1は中断されないのですか?代わりの
'method2'の' NSLog'文はすべて表示されていますか? – rmaddy
これはある種のテストコードですか?あなたは確かにこのような実際のコードを望んでいないでしょう。 – rmaddy
デバッガで実行しましたか? – clemens