2009-05-12 10 views
8

私はMacやiPhoneを持っていません。しかし、Cを使って、smalltalk、python、またはrubyのアイデアに対してよりダイナミックにするという考えは、私にとって本当に魅力的です。私は客観的なCから始めたいと思っています。Macなしで学習目標C

目的CはCの構文スーパーセットですか、それとも本当にのようなものですか?gccなどでコンパイルできますか?

私はRubyでプログラミングのほとんどを行います。 Objective CはCよりもはるかに寛容に思えます。CでRubyのネイティブ拡張を書くことができます。Objective CでRubyのネイティブ拡張を書くことができますか?

Mac/iPhoneを所有していてXcodeを所有している以外の方法でObjective Cを使用するにはどうすればよいですか?

+3

それはルビーをタグ付けされているのはなぜ? – MickaelFM

+0

目的-cで書かれたルビー拡張の計画に成功しましたか?私はobjective-cでもruby拡張を開発しました。今、私は新しいobjective-c例外(@ throw/@ catch ...)に問題があります。私がそれらを使用すると、例外の最初の発生時に私のRubyアプリケーションのコアダンプが発生します。私はgnu-runtimeを使用しており、コアダンプコードはその内部にあります: objc_exception_throw(...){ ... /*何らかの巻き戻しエラー。 */ abort(); } –

答えて

6

Wikipediaは、それがAppleの のMac OS XとiPhone OS上で主に使用され

今日、2つの に基づく環境、OpenStepの規格に準拠しないものの 、 を言うと、それが第一言語でありますNeXTのNeXTSTEP OSで をメイン言語として使用したのですが、 でしたが、AppleのCocoa APIには を使用しました。 Generic Objective-C コンパイラを含む gccでサポートされているシステム用に、 これらのライブラリを使用しないObjective-Cプログラムも にコンパイルできます。

今日、多くの場合、ココア 又はGNUstepのよう 標準オブジェクト(しばしば 「キット」又は「フレームワーク」としても知られる)、一定ライブラリと タンデムで使用された対物-C。

主にWindowsを実行していて、GNUStepを実行している場合は、Linux VMを取得する必要があります。

1

については、以下のリンクをご確認くださいObjective-Cの言語との違いは、ありますアップル社がその上に構築したフレームワークも含まれています。これらのフレームワークは、コード内で使用できる一連のオブジェクトで構成されており、MacまたはiPhoneをターゲットにしている場合に特に役立ちます。 GNUStepにはいくつかの類似のオブジェクトがありますが、Cocoa/etcライブラリの完全な置き換えではなく、特にiPhone関連のものは何もカバーしていません。

GNUStepとObjective-C言語(gcc経由)は多くのプラットフォームで利用でき、Objective-Cオブジェクトを使用する独自のプログラムを作成し、Objective-Cの任意のC APIと対話できます。

Objective-CはCのスーパーセットなので、Cよりも本当に寛容ではありませんが、おそらくC++(ほぼCのスーパーセット)よりも寛容です。 Objective-CとC++をGCCと混在させることもできますが、特に例外処理に関しては少し複雑になります。

GNUStepとGCCを使い始めるのは良い方法です。

+0

Objective-Cは、C++とは異なり、Cからのクリーンなブレークはほとんどありませんが、Cの厳密なスーパーセットです。 –

+0

Objective-Cは、ほぼ完全なスーパーセットではなく、Cの完全なスーパーセットです。 –

+0

さて、申し訳ありません(Obj-CよりC++に精通しています)。私はテキストを修正しますが、実用的な観点からもどちらもCのスーパーセットです。 –

3

リンゴはgccに戻って目的に貢献しました(GPLであるという選択肢が多かったわけではありません)。だから、gccをセットアップできるところでは、objective-cコンパイラをセットアップすることができます。

それ以外の環境では、元のOpenStep/NextStep環境の少しの風味が得られます。

0

ネイティブルビ拡張でObjective Cを使用できないという魅力的な理由はありませんが、それ以外の利点はありません。私は知っている限り、目的のCバインディングにルビがないので、あなたは依然として低レベルのC API呼び出しを使用する必要があります。さらに、Objective Cにはかなりの実用的なクラスのライブラリが付属していますが、役に立つとはいえ、ルビ拡張の文脈でそのサイズと重量を簡単に正当化できません。 ObjCで簡単な実験のための

+1

ユーティリティクラスの実質的なライブラリは何ですか? Objective-Cには事実上何も付属していません。 – Chuck