5

主にAppleのツールとGUIを使用するために、Objective-CとCocoaの学習を検討しています。

ただし、グラフィックプログラミングも行いたいと思います。OpenFrameworksとCinderは私の目を引く2つのライブラリですが、私たちはC++の世界にいます。

私はJava/Swing/Processingのバックグラウンドを持っています...Cファミリーについてはよくわかりません。ネイティブCocoaからCinderやOFなどのCおよびC++ライブラリをどれだけ効果的に呼び出すことができますか?

そして、ボーナスポイント:このようなソリューションはiPhoneまたはiPadで機能しますか?

4

3 に答える 3

12

つまり、C++はOSXおよびiOSプログラムに最適であり、Objective-Cで非常にうまく機能します。

さらに詳細に:

ただし、グラフィックプログラミングも行いたいと思います。OpenFrameworksとCinderは私の目を引く2つのライブラリですが、私たちはC++の世界にいます。

私はそれらの図書館について直接話すことはしません。

より一般的な言葉であなたの質問に答えるために:C、C ++、ObjC、およびObjC ++はiOSアプリのファーストクラスの開発言語であるため、C++はアプリで問題ありません。

私はJava/Swing/Processingのバックグラウンドを持っています...Cファミリーについてはよくわかりません。ネイティブCocoaからCinderやOFなどのCおよびC++ライブラリをどれだけ効果的に呼び出すことができますか?

Objective-C ++を使用すると、C、C ++、およびObjective-Cをすべて同じ翻訳で使用できます。必要に応じて、C ++、C、またはObjCを自由に使用/組み合わせてください。このルートを使用すると、コンパイル時間が長くなり、いくつかの制限*があります。そうでなければ、サポートはとても良いです。Appleでさえ、apps/libsでかなりの量のC++を使用しています。

そして、ボーナスポイント:このようなソリューションはiPhoneまたはiPadで機能しますか?

間違いなく。iOSおよびOSXのc++11サポートは、現在少し遅れています。ただし、clangチームは非常に迅速にサポートを追加しています。最新の機能が必要な場合は多少の問題が発生する可能性があるため、プロジェクトがそれに依存している場合は、最先端のC++およびコンパイラー機能を控えてください。もちろん、プログラムでどれだけうまく機能するかを判断するために、リリースごとに最新のclang機能を使用してプログラムをサンプリングしても問題はありません。

更新:この時点(2011年11月8日)で、clangは私が投げたC++2003コードのほぼすべてを処理できます。コードの速度とサイズは、GCC+LLVMと比較して異なります。この時点ではどちらも削除したくありませんが、どちらのコンパイラもC ++ 2003でうまく機能し、AppleのGCCはc ++ 11をサポートしないため、c ++ 11の機能が必要な場合は、clangのテストを開始することをお勧めします。近い将来に。

  • C ++は、チームがC ++の使用方法を知っている限り、iOSでの一般的なパフォーマンスクリティカルな開発に理想的(IMO)です。
  • 適切な理由で各言語の適切な機能を使用し、優れた互換性が存在する場合、C、ObjC、およびC++の混合は非常に強力です。これはOSXから数年前にさかのぼります(コンパイラは当時GCCでしたが)。

*制限:これらは合理的な制限です-必要なすべての機能が存在しますが、人々が期待する可能性のあるものがいくつかありますが、それは不可能です。最も一般的なのは、さまざまなオブジェクトモデルのタイプを導出できないことです。つまり、objc型からc ++型を作成することは合理的にできませんが、どちらのオブジェクト型でも複数の型のivarを自由に宣言できます。

于 2011-07-01T06:48:02.690 に答える
6

iOSアプリケーションでOpenFrameworksとCinderの両方を使用することは可能です(この関連するSOの質問:OpenGL ES、OpenFrameworks、Cinder、およびIOSクリエイティブ開発を参照)。ただし、Appleは開発者にOpenGLの使用を「推奨」しています。

于 2011-07-01T05:14:50.350 に答える
3

現在のところ、新しいCocoaCinderGLラッパーを介して、一般的なCocoaプロジェクト内からCinderを使用できます。これにより、アプリケーションに複数のNSCustomViewを追加でき、それぞれがCinderの独立した「インスタンス」を実行します。そして明らかに、これらのインスタンスに必要な数のNSButton、NSSlidersを接続できます。お役に立てば幸いです。

于 2011-09-01T21:27:31.337 に答える