私のアプリケーションは、NSOperationQueueによってセカンダリスレッドを作成します。 メインスレッドでは、グローバル変数であるバッファにメッセージを書き込みます。 セカンダリスレッドでは、改行文字を含むメッセージが到着するまで待機します。 最適化オプションなしでうまく動作します。 最適化オプション(-O1〜-Os)でコンパイルすると、whileループのままです。 ループ内にNSLogを書くと、動作します。 これの問題は何ですか? NSLogを使用せずにこの問題を解決できる良い方法はありますか?NSLogは最適化のバグをどのように解決しますか?
while (!strchr(buffer, '\n')) {
NSLog(@"!"); // without this, in optimized mode, it stays in while loop.
}
Xcode> 3.2.6でビルドしていますか。もしそうなら、ARMV6ベースのデバイス(iPhone 2G、3G)でテストしていますか? – Till