NSRunLoopのrunMode:beforeDate:がわからん。

以下のコード。

NSLog(@"start stage");
UIView *view;
//view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
view = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 240)];
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:5.0f];
BOOL flag = [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:date];
NSLog(@"next stage: %d", flag);
[view release];

UIView の生成だとちゃんと5秒待ってくれるのに、UIWebViewの生成だと待ってくれない(謎)

指定されたモードの入力ソースの期限が
全て切れている場合は、ループを実行せずにNOを返します。
それ以外はYESを返します。 

oomori.com - このウェブサイトは販売用です! -&nbspoomori リソースおよび情報より引用

とのことなので、「入力ソースの期限が切れて」いる状態なのだろう。flagの値もNOになってるし。

NSRunLoopとスレッドの関係ももうちょっと正確に把握したいところ。


とりあえず今日勉強会で崎さんから教えて頂いた、処理待ちに使うのを覚えとこう。。
objective c - Best way to make NSRunLoop wait for a flag to be set? - Stack Overflow