以下のコードは、アセットの値を非同期的に読み込みます。whileループを使って待ちます。
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:aAudioLink options: nil];
[asset loadValuesAsynchronouslyForKeys:keys
completionHandler:^{
canExit = TRUE;
}];
while (canExit == FALSE) {
// NSLog (@"canExist = FALSE");
}
NSLog(@"canExist = TRUE");
上記のコードのように NSLog ステートメントがコメント化されている場合、最後の NSLog は呼び出されません。NSLog ステートメントがコメント化されていない場合、最後の NSLog が呼び出されます。
ブロックとブロック外のコードは異なるスレッドで実行され、どちらもメイン スレッドではありません。
その理由は何ですか?