スクリプト言語ばかり触っていたので気づかなかったのですが、NSThreadを使うときの注意をまとめます。
もはやタイトルどおりなのですが、NSThreadを使うとメインのスレッド処理を止めてしまいます。
そこで通信などをメインスレッドで行っているときの処理を待たせる場合は、
[NSThread sleepForTimeInterval:3];
ではなく、
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
で処理を止めると、通信を滞り無く進めつつ、処理待ちができます。