39

私の既存の C# の専門知識から、Objective C で iPad/iPhone 用のアプリを作成することに移行するのはどれくらい難しいでしょうか?

4

5 に答える 5

100

言語ジャンプはOKです。[と の最初の衝撃を乗り越えたら]。ただし、ライブラリとフレームワークのショックは相当なものです。

Cocoa および Touch フレームワークは、.Net Framework と比較すると大幅に軽量であるため、少なくとも明るい面を見ることができ、学ぶ必要が少なくなります。しかし、その根底にある哲学、レイアウト、および歴史的な進化の道筋は、C#/.Net フレームワークとは大きく異なります。これが簡単か難しいか、評価するのは難しいです。いくつかの個人的な意見:

  • UI を構築する Cocoa の方法は、今日の .Net フレームワーク (フォームまたは WPF)よりも何光年も先を行っています。最初は理解するのが難しいかもしれませんが、理解できれば、非常に理にかなっています。これは、Smalltalk フレームワークに基づいた、古き良きModel-View-Controllerであり、UI 設計の正しい道を自然に案内してくれます。
  • グラフィックス、ビデオ、メディアは、.Net のバックグラウンドから来ると、別の惑星から来たように感じられます。しかし、見た目が難解なように見えるにもかかわらず、ココア製品は非常に強力ですが、どういうわけか低レベルです。
  • アニメーションは大きな安堵のため息になるでしょう。Cocoa アニメーションは単純に使いやすく、.Net には同等のものはありません。
  • Cocoa ネイティブ グラフィックスの代わりに openGL を使用する場合は、openGL であり、openGL はどのプラットフォームでもほぼ同じフレーバーです。
  • ネットワーク プログラミングは、Cocoa 側では貧弱です。いくつかの基本的なサポートがあり、少なくとも API は愚かなことを行うのが本当に難しいように設計されていることを認めなければなりません (非同期プログラミングを使用する必要があるため、クライアントごとに 1 つのスレッドという無意味なことはもうありません)。 .Net シュガー ユーティリティ (WebRequest、WebClient など) を見逃すことでしょう。
  • XML 解析。Cocoa のサポートは単純に原始的です。少なくとも、繰り返しますが、XML 構文解析はイベント・ドリブンであるため、より優れたプログラムに導くことができますが、まとめるのは複雑です。
  • データベース。異世界になります。生の SQLite または Core Data を選択できます。Core Dataの方が優れています。高レベルの ORM とアクティブ レコードのようなものであり、基礎となるストレージのすべての複雑さが抽象化されています。使い方を知っている何かを実行するように要求する限り、使いやすく強力です。方法がわからないことを強制するのは、信じられないほど面倒です。最終的には、どの ORM にも当てはまります。LINQ が恋しくなり、SQL を忘れなければならなくなります。その要点は、.Net からの DB プログラミングの経験が Core Data の世界に転送されないということです。生の SQLite に代わるものは、より見慣れたものに見えますが、非常に低レベルであり、2010 .Net よりも 1990 ODBC をプログラミングするように感じられます。
  • キー値コーディング プログラミング. この概念には、.Net に直接相当するものはありません。単純な辞書のように聞こえるかもしれませんが、実際にははるかに強力です。[Objective-C] の Objective 部分のランタイム エンジンと織り交ぜて、いくつかの巧妙なトリックを生み出します。Core Animation または Core Data を効率的に使用するには、Key-Value コーディングを理解する必要があります。ステロイドへの反省と考えることができます。Linq-to-Objects と同じトリックをいくつか実現できますが、Linq ほどエレガントにはなりません。
  • C++ です。Objective-C は C++ のスーパーセットであり、最近リリースされた gcc によってサポートされているため、いつでも C++ に戻すことができます。STL、ファンクタ、テンプレート メタプログラミング、それらはすべて機能します。同じアプリケーションで純粋な Cocoa と Core Objective-C と C++ を組み合わせて使用​​できます。Objective-C クラスを C++ クラスとして継承するようなことはできませんが、C++ クラスと Objective-C オブジェクトの間で通信することはできます。ブーストまたはLokiのサポートの現在のステータスが不明です。

Cocoa で不十分にカバーされている領域の多くには、さまざまなサード パーティ ライブラリがありますが、すべての Cocoa サード パーティと .Net サード パーティを比較することはできません。

全体として、 Objective-C ではエントリー バーがより高いため、簡単に要約します。頭脳を持ってきてください。

于 2010-04-14T21:59:20.127 に答える
31

Remus の素晴らしい回答に加えて、メモリ管理を理解し、実装できる必要もあります。Java または .NET で育った場合、これは異質なことかもしれません。チュートリアルのこの部分に細心の注意を払い、意図的に台無しにして練習してください。これらのエラーがどのように見え、どのように動作するかを知る必要があります。

幸運を!

于 2010-04-14T22:10:31.087 に答える
6

それはまともなサイズのジャンプですが、数日でスピードを上げるのに十分なほど学ぶことができます.

Objective C の構文と規則を理解したら、かなり充実した Cocoa ライブラリとフレームワークを詳しく調べる必要があります。

Objective C または iPhone の開発に関する本を入手するか、http://developer.apple.comサイトのすべてのチュートリアルに目を通すことをお勧めします。

始めたら、次のサイトでアプリケーションの適切なコード例を確認してください: http://appsamuck.com

于 2010-04-14T21:34:45.903 に答える
2

OOPを知っていれば大丈夫だと思います。ただし、シンタックスはほとんどのプログラミング言語のように一般的ではありません。

object.function(var arg1)

のように見える

[オブジェクト関数[var:arg1]]

私が正しく覚えていれば。

Apple Dev ID と iTunes をお持ちの場合は、http://developer.apple.com/iphone/index.actionにアクセスしてから、Getting Started ビデオにアクセスしてください (その後、ある時点で Apple Dev ID を確認する必要があります)。 iTunes を起動します)。そこにはたくさんのビデオがあります。「Objective-C と Cocoa Touch の紹介」と呼ばれるものは、良い出発点になります。

それが役立つことを願っています。

于 2010-04-14T21:44:36.270 に答える
1

言語は難しくありませんが、開発環境はいくつかの点で VS ほど滑らかではないことがわかりました。たとえば、インターフェイス ビルダーは、時折同期の問題を引き起こすコーディング環境への個別のアプリケーションであり、イベント名を間違って入力した場合、コンパイラは通知しません。

インターフェースビルダー素晴らしいと言っていました。コードに戻る前に、保存ボタンを押すことを忘れないでください。

于 2010-04-15T09:05:09.517 に答える