2

私はiOS開発(およびObj-C)を初めて使用し、既存のCプログラムをiOSに移植しようとしています。

Cプログラムは通常コンソールで実行されますが、iPhoneでそのUIを作成したいと思います。すでにCコードを移植しており、シミュレーターを実行すると、コンソールウィンドウにprintf出力を取得できます。元のコードをできるだけ変更したくないので、これが私の計画です。

  1. プログラムの実行には時間がかかるので、別のスレッドで実行する必要があると思います。メインメソッドを呼び出すために必要なのはNSInvocationOperationだけのようです。
  2. stdoutをパイプにリダイレクトします。
  3. 別のスレッドで、パイプから読み取り、これをUIにスローします。これに使用するのに最適な同時APIが何であるかわかりません。

これはiOSにとって良い戦略ですか、それともこれを移植するためのより良い代替手段がありますか?注意すべき落とし穴はありますか?

4

1 に答える 1

1

並行性については、最速のプログラミングのためにディスパッチキューを使用してください。このガイドを参照してください:http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html

画面に印刷するには、さまざまな方法でこれを行うことができますが、UILabelテキストをすぐに表示したい場合は、を使用してください。後でうまくフォーマットすることもできます。

マルチスレッドの主な落とし穴は、他のOSと同じです。つまり、読み取りと書き込みが同時に行われるデータモデルをロックします。上記のリンクされたガイドにも記載されている@synchronizeを使用して、ディスパッチキューを使用するかスレッドセーフにすることができます。dispatch barriers

于 2012-08-13T15:40:57.937 に答える