12

iOSとAndroidのスマートフォン向けのアプリケーションを開発したいと考えています。アプリケーションの開発には、主にMicrosoftテクノロジを使用しています。Android用のMonoTouchとMonoを使用する場合、デバイスごとに異なるUIレイヤーのみを使用して1つのコードベースを維持するだけでよいと考えました。

現在、私たちの小さなチームの誰もスマートフォンアプリケーションを開発したことがなく、すぐに必要になるため、外部委託したいと考えています。他社に、iPhone開発にMonoTouchとObjectiveCのどちらを使用するかを尋ねました。彼らのほとんどは、Objective Cを選択すると述べました。ObjectiveCはより多くの機能と可能性を提供し、より高速であり、MonoTouchの場合、Appleは将来それをサポートしなくなる可能性があると述べました。それはすべて真実ですか、それともObjective Cを好む他の理由がありますか?このようなスレッドが他にもあることは知っていますが、私の質問、特にAppleによるMonoTouchのサポートに関する質問には答えられませんでした。

4

6 に答える 6

40

アプリケーション。Android用のMonoTouchとMonoを使用する場合、デバイスごとに異なるUIレイヤーのみを使用して1つのコードベースを維持するだけでよいと考えました。

アプリを正しく構成すれば、これは可能性です。そうでない場合:いいえ。

Java + ObjC + C#( WP7 / Win8メトロなど)を使用する場合、これはまったくオプションではありません

現在、私たちの小さなチームの誰もスマートフォンアプリケーションを開発したことがなく、すぐに必要になるため、外部委託したいと考えています。他社に、iPhone開発にMonoTouchとObjectiveCのどちらを使用するかを尋ねました。彼らのほとんどは、ObjectiveCを選ぶだろうと言った。

あなたがそれをアウトソーシングしているなら、あなたはそれを何に書きたいかを指示するべきです、確かに?社内でサポートする必要があり、C#スキルしかない場合は、MonoTouchなどの方が理にかなっています。

彼らは、ObjectiveCがより多くの機能と可能性を提供すると述べました。

FUD、そしてまた間違っています。Monotouchには完全なAPIがあります。そこにない場合は、Xamarinがそれをバインドするように(以前は頻繁に行っていました)

それは速いです

ベンチマークを見たいです。はい、技術的には、状況によっては高速になる場合ありますが、一般的には、MonoTouchは同じかそれより高速です。

プログラマーエラーは、iOSアプリのパフォーマンスの問題のより一般的な原因です。たとえば、UIスレッドから物事を取得しない(ObjCよりもMonoTouchの方が簡単ですが、ブロックはそれを大いに助けました)、またはFinishedLaunchingから抜け出すのに時間がかかりすぎます(必要に応じて、「メイン」メソッド)。実際にはそうではありません...)

ガベージコレクションや、linq、xml / json解析、ジェネリックス、コレクションなども非常に価値があり、非常に高速です。

また、MonoTouchの場合、Appleは将来それをサポートしなくなる可能性があります。

はい、チャンスがあります。ティム・クックがアップルの数十億ドルで逃げ出し、ハワイ全体を購入する可能性もあります(ラリー・エリソンの「私はこの島を購入する」ではありません)。しかし、今ではチャンスはかなり少ないです。

それはすべて真実ですか、それともObjective Cを好む他の理由がありますか?このようなスレッドが他にもあることは知っていますが、私の質問、特にAppleによるMonoTouchのサポートに関する質問には答えられませんでした。

AppleはMonoTouchをサポートしていません。Xamarinはそうです、そして彼らはそれを非常にうまくやっています。Appleは、自社製品であるXCode以外は何もサポートしていません。

AppleはMonoTouchアプリを許可しています(たくさんあります)。別の見方をすると、通常、上位100のゲームの95%は、同じ手法(C#コードの事前コンパイルとMono / .NETフレームワークのカットダウンバージョンの埋め込み)に基づくUnity3Dを使用して記述されています。 )。

ObjCを好む理由は次のとおりです。

  • あなたはすでにObjCとCocoaTouchを知っていて、それが好きです。
  • あなたのチームはすでにObjCとCocoaTouchを知っているか、知っている人を簡単に雇うことができます(注:現在、私が知る限り、iOS開発者は彼らを雇うことができれば非常に高価です)
  • ベータ版がリリースされた日に使用する必要があります。現在のMonoTouchを使用して、ベータ版がインストールされているiOS[編集済み]デバイスにデプロイできることに注意してください。iOS6ではまだ新しいものを使用できません(Xamarinは「約2週間」と言っていましたが、これはもうすぐです...)。また、ベータ版SDKで構築されたストアには、その中のコンテンツを使用していなくても、アプリをデプロイできないことにも注意してください。あなたはあなたの製品の説明の中でiOS[編集済み]にさえ言及することはできません(私は試しました)
  • あなたは[squareBracketsandTheOccasional:@"奇妙な構文のもの"]が大好きです。

さて、クロスプラットフォームの共有コードアプリを構築するのは簡単な作業でしょうか?地獄番号 これは、重要なアプリケーションの開発の非常に複雑な部分です。しかし、それはソフトウェア開発の楽しい部分です。それが簡単だったら、つまらないでしょう!Greg Shacklesの本(http://www.amazon.com/dp/1449320236)を入手して、iOS + WinPhone+Androidスタイルの開発に必要なものを理解してください。

于 2012-06-27T15:11:24.713 に答える
11

私の勘では、あなたが話をした会社は単にObjective-Cを使用することに慣れているということです。そこに彼らのスキルがあり、それが彼らが自分たちの道から逸脱したくない最大の理由です。他の理由は、両方の方法で議論することができます。

Appleが何をするかを誰も予測できないのは事実ですが、Appleが2010年の夏に行ったようにサードパーティのツールキットとAPIを禁止する可能性は非常に低いです。それは短期間であり、完全に逆転しました。その決定。彼らの現在の焦点は、アプリ開発を容易にすることです。つまり、代替の開発方法に対してフィールドをオープンに保つことを意味します。MonoTouchは安全だと思います。

速度に関しては、C#は一般的に非常に高速な実行可能ファイルを生成します。それらはObjective-Cほど速くはないかもしれませんが違いに気付くとは思えません。一部のテストでC#がC / C ++よりも優れていることを示したWebサイトをどこかで見たのを覚えていますが、それは.NET環境であり、Monoではありませんでした...残念ながら参照はもう見つかりません。探し続けます。しかし、速度の要点は、C#の速度が非常に優れているということです。BASICとCのようなものではありません。Java/JITとCのようなものです。

C#には、 Objective-Cに比べて多くの(!)利点があり、それらは他のStack Overflowの回答に列挙されているため、ここでは繰り返しません。あなたはそれらを簡単に見つけることができます。

私はMonoTouchの明らかなファンですが、1つだけ言わなければなりません。C#/。NETに精通しているため、iOSの開発や保守が容易になると企業が考えるのは間違いだと思います。 MonoTouchを使用するアプリ。MonoTouchは基本的にCocoaTouchAPI上のC#レイヤーであるため、これは真実ではありません。つまり、Appleのやり方を学ぶ必要があります。アプリデリゲートとビューコントローラー、およびすべてのUIKitのものがあります。そこには本当の学習曲線があります。ただし、C#に精通している場合は、MonoTouchが非常に役立ちます。

更新:
C#の速度に関する記事を見つけました:直接のベンチマーク:C ++ vs .NET

于 2012-06-27T12:13:08.680 に答える
8

私は実際に、これまでに開発したすべてのアプリにMonoTouchを使用しました。パフォーマンスが問題になることは一度もありませんでした。Objective-Cを使用した場合にどれほど悪い結果になるか想像できません。私は米国のアプリストアでトップ10のアプリを2つ持っています:「DrawAStickman」と「DrawAStickman:Episode2」(これ以上取り組んでいることを心配しないでください)。

C#と.Netを知っている場合、Objective-Cを学習しようとすると、生産性が大幅に向上します。私はiOS開発前はC#.Net開発者(Windowsのみ)でしたが、MonoTouchへの移行は素晴らしいものです。

Linqが好きで、100行未満のXMLの解析、ガベージコレクション、ジェネリックス、単純なマルチスレッド、そして奇妙な角かっこがない場合は、MonoTouchが最適です。

于 2012-06-27T12:02:23.843 に答える
6

私はObjective-Cとc#(MonoTouch&Droid)の両方を使用していますが、両方が本当に好きです。私がc#でコーディングしているときは、Obj-Cで気に入っているLinqなどの機能がたくさんあります。また、Obj-Cでコーディングしているときは、c#でコーディングしたいことがたくさんあります。しかし、私はコーディングしているものにすぐに適応します。パフォーマンスに関しては、かなりグラフィックを多用するものであっても、まったく違いは検出されなかったので、c#を使用しない理由としてそれを使用しません。

最終的には、コーディングに慣れているかどうかにかかっていると思いますが、もちろん、適切に設計されたクロスプラットフォームプロジェクトでは、Monoを使用すれば完全にクロスプラットフォームのコアコードを使用でき、UIを実行するだけで済みます。プラットフォーム固有の方法での作業-これに関しては、プラットフォームに適切でユーザーに馴染みのある方法でUIを機能させるために、明らかにネイティブなものを知る必要があります。

于 2012-10-12T08:48:34.577 に答える
3

MS SQLをデータストアとして使用し、WinFormsとWebUIを備えた基幹業務アプリがあります。これは、WindowsMo​​bile6.5およびタブレットアプリとWebサービスを統合します。すべてのC#。

Objective-CとHTML-5でいくつかの実験を行った後、MonoTouchに完全にコミットしました(プロトタイプを作成しました)。ビジネスロジックを再利用でき、c#で新しいコードを開発できます。

私たちのビジネスロジックは絶えず強化されており、これらの強化は、Objective-CまたはC ++でロジックを複製することなく、モバイルアプリにすぐに表示されます。

私たちの主な問題は、iPhoneとiPadのUIに慣れているac#プログラマーを見つけることです。

MonoTouchは安定しており、制限はありません(Objective-Cがバインドするのと同じiOS APIにバインドしています)。学習曲線の中で、質問があり、バグにぶつかり、いくつかの誤解がありましたが、Xamarinからのサポートは素晴らしいものです。

パフォーマンスは問題ではありませんでした-私たちのアプリは、舞台裏で多くのことを行っていますが、きびきびしています。

于 2012-06-30T21:20:15.577 に答える
-2

アップルが何をサポートし、将来何をサポートしないかを誰も確実に知ることはできませんが、アップルは過去にモノラルにいくつかの問題を抱えていました、そして歴史は繰り返される傾向があるので、それが起こる可能性がありますまた

そうは言っても、常にネイティブアプリケーション開発SDKと環境を使用すると、柔軟性が高まり、リアルタイムで更新され、ネイティブでのパフォーマンスが常に向上します。

于 2012-06-27T11:39:56.117 に答える