9

私は、iPhone アプリケーションを作成することを目標に、小規模なスタートアップと協力しています。私たちのチームのプログラマーは全員 C と Java の両方を知っていますが、ObjC/C#/iPhone の経験はありません。何があっても何かを学ぶことになります。この件に関して私が目にしたすべての質問は、C# プログラマーが iOS に取り掛かるという観点からのものでした。そのため、どちらかを学習することの相対的なメリットに関する情報はありません。

したがって、私が知りたいのは、これらの点に関して、新しいプログラマーにとっての C# と Objective-C の相対的なメリットです。

  • パフォーマンス
  • 使いやすさ
  • 学びやすさ
  • 信頼性 (つまり、新しい iOS バージョンは MonoTouch アプリを壊しますか?)

また、MonoTouch での記述は、Android とのクロスプラットフォーム開発にメリットがありますか?

4

4 に答える 4

13

スタートアップの目標が iPhone アプリを作成することである場合、明らかに、iOS アプリケーションが構築されている言語である Objective-C を学ぶ必要があります。あなたのチームはすでに C の経験があるので、非常に簡単に始めることができます。Big Nerd Ranch の本を読めば、1 週間か 2 週間で使い始めることができます (私は Big Nerd Ranch とは関係ありませんが、単に素晴らしいと思います)。

チームに C#/.NET の経験がないことを考えると、MonoTouch を持ち出す理由がわかりません。Titanium SDK (JavaScript)、RubyMotion (Ruby) など、MonoTouch のようなフレームワークは他にもたくさんあります。これらはすべて素晴らしいものですが、私が見たところ、主にそれぞれの言語の経験がある人向けです。これらを使用すると、使い慣れた言語を使用して iOS アプリケーションを作成できますが、次の欠点があります。

  1. パフォーマンスは、Objective-C で記述されたアプリケーションと同じくらい良い場合もありますが、通常は少し (場合によってはかなり) 悪くなります。
  2. 学習用のリソースは、iOS SDK/Objective-C ほど豊富ではありません。iOS アプリを作りたいと思っている人はたくさんいますが、そのうちの何人かはこれらのフレームワークを使用しており、それらの間で希薄化しています。iOS 開発に利用できるリソースのごく一部だけが、特定のフレームワークに割り当てられます。
  3. これらのフレームワークは iOS SDK/Objective-C に基づいているため、当然ながら開発は常に遅れをとっています。Apple が iOS SDK の次のバージョンで根本的に新しい API をロールアウトした場合、これらのフレームワークが適応するまで待つ必要があります (Objective-C で記述されたアプリケーションも壊れる可能性がありますが、それに基づいて対処する方が簡単です)。ポイント#2)。
  4. これらのフレームワークのほとんどは、iOS SDK に精通している必要があります。アプリケーションが起動時にメソッドを呼び出すことを知る必要があり- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsますが、さらに、それを MonoTouch: の適切なメソッドに変換する方法を覚えておく必要がありますpublic override bool FinishedLaunching (UIApplication app, NSDictionary options)。iOS SDK は大規模であり、ほとんどの iOS 開発者は洞察を得るために Apple のドキュメントに依存しています。そのため、Objective-C 用に記述された API ドキュメントを参照し、メソッドを選択したフレームワークに変換します。
  5. Objective-C エコシステムは常に進化しており、 CocoaPodsbwokenなどのクールな新しいプロジェクトがあります。これらは主に Objective-C と Xcode を念頭に置いて開発されています。選択したフレームワークで動作するようにそれらを構成すると、ほとんどの場合、余分な時間と作業が発生します。

上記の点により、一般的に、これらの他のフレームワークのいずれにも深く入り込むことができなくなりました。それらはすべて非常に優れていますが、採用における主な利点は、Objective-C 以外の深いスキルセットを持つ人々の開発を促進すること、または AndroidiOS に投資するリソースが不足している小規模なチームのクロスプラットフォーム開発を可能にすることです (そしてWindows Phone) プログラマー。うまくいけば、利点が採用者にとって上記のコストを上回ります.

また、MonoTouch での記述は、Android とのクロスプラットフォーム開発にメリットがありますか?

そうだと思います。実際、MonoTouch のホームページは、フレームワークを使用する主な利点としてそれを宣伝しています。ビュー/コントローラー クラスについてはよくわかりません。これらは に関連付けられているように見えるためですUIKitが、モデルにカプセル化されたロジックはかなり簡単に移植できるはずです。

簡単に言えば、あなたとあなたのチームは iOS 開発に Objective-C を使い続ける必要があると思います。

于 2012-05-13T17:54:40.730 に答える
7

iPhoneアプリを作成するだけの場合は、必ず Objective C を選択してください。ただし、Android、Windows Phone、Windows rt、Blackberry、Webos、またはその他のオプションを含むモバイルアプリが必要な場合は、選択することをお勧めします。いくつかの代替プラットフォームを詳しく見てみましょう。その中で、MonoTouch は重要な選択肢の 1 つです。

于 2012-05-13T18:28:04.067 に答える
1

Objective C は C の厳密なスーパーセットであるため、ARM でコンパイルされた C コードのパフォーマンス特性を理解していれば、iOS UI を除いて、使い慣れた C サブセットをそのまま使用できます。

経験豊富な C プログラマーが、Objective C での iOS アプリの作成に 2 週間程度で慣れ始めるという報告があるようです。もちろん、言語に関係なく、継続的な学習プロセスで広範なフレームワークと API を学習します。

于 2012-05-13T17:51:32.427 に答える
0

パフォーマンスに関しては、答えはずっと Objective-C です。

そうは言っても、HTML5でこれを行うことを見てください。高速化された変換に固執する場合、アプリケーション フロント エンドの HTML5 パフォーマンスは驚くほど良好です。HTML5 アプリを Android に移行するのも非常に簡単です。

簡単な答えは Objective-C です。学ぶのはそれほど難しいことではありません。C と OOP がしっかりしていれば、問題ありません。

于 2012-05-15T02:48:05.830 に答える