12

.NET CLR が Objective-C をサポートすることは可能ですか? これが不可能な理由はありますか (法的または実装上の観点から)。

クロスプラットフォーム アプリケーション開発の精神からすると、Windows マシンで Objective-C アプリケーションを作成して実行できると便利です。少なくともそうなると思います。

4

7 に答える 7

6

Objective-C は C の厳密なスーパーセットです。そのため、ポインタなど、.NET への変換が不十分な機能が多数あります。もちろん、実際には、ほとんどの Objective-C プログラムは、より厳密に定義されたバージョンの言語仕様に対してもコンパイルされるように書かれている可能性があります。コード。

これが事実であると仮定すると、Objective-C のメソッド ディスパッチ部分はDLRの動的機能に自然に適合します。私は実際にそのようなポートを作成することを検討しました。

于 2008-10-29T04:10:31.847 に答える
3

Objective-C構文を使用して.NETアプリケーションを記述でき、Foundationフレームワーク(NSArrayなど)のデータ構造を使用できることを意味する場合、これを実現するのは簡単です(時間はかかりますが)。これは、任意の言語のサポートを追加することと同じです。

ただし、MacでのObjective-C開発を優れたものにしているのは構文ではなく、Appleが提供する他のAPIです。

実装がはるかに難しいこれらのAPIに加えて、CLRでの実装がはるかに難しいBindingsサポートやKeyValueObservingなどについても考慮する必要があります。

于 2008-10-29T11:33:00.317 に答える
3

CLR の上に Objective-C をホストすることに問題はありません。DLR の上にランタイムを実装することも、最悪の場合は独自に実装することもできます。関心のある Objective-C コードの大部分は Apple のフレームワークに依存しているため、これは CLR 用の実質的な Objective-C コード ベースをコンパイルすることとはまだ大きく異なります。

最終的には、それらを再実装するか、Objective-C を .NET フレームワークにブリッジする必要があります。これにより、Objective-C コードを記述できるようになりますが、既存の Objective-C と互換性のあるフレームワークは使用されません。コード。Cocotronは、Mac 開発者が一部の Objective-C アプリケーションを Windows に移行できるようにするクロス コンパイル環境ですこれは、Windows 用の Objective-C ランタイムのかなり良い例を提供するだけでなく、.NET をターゲットにできるコンパイラを起動すると、合理的な量の Objective-C コードを使用可能にするために必要ないくつかのフレームワークを提供する可能性があります。

于 2008-10-29T04:36:56.957 に答える
1

他の方がおっしゃる通り、可能です。それが良いアイデアであるかどうか (特に「クロスプラットフォーム開発の精神において」) は別の問題です。

繰り返しますが、既に述べたように、この言語にはライブラリがなくても十分です。Objective-C は現在、Mac と iPhone のコンテキスト内でほぼ排他的に使用されているため、Windows でコードを記述できることは、それらがターゲットである場合にはあまり役に立ちません。

さらに、すでに Windows で Objective-C を記述できます。一般的にXcodeで使用されるGCCは、 GNUstepと同様に Windows でも Objective-C をコンパイルすると思います。

Objective-C を .NET 経由で実行する利点があるかどうかを判断するのはどれですか?

Objective-C には、通常の .NET 言語には見られない便利な機能いくつかあります。個人的には、パラメーターのメソッド名のラベル付けがとても気に入っています。

とはいえ、持ち込むだけの価値があるとは思えません。Objective-C が得意とすることのほとんどは、C# には独自のソリューションがあります。今、彼らが名前付き引数の実装を拒否することを容赦するなら...

于 2008-10-29T12:44:59.420 に答える
1

いいえ、実際にはありません。.NETは、基本的に仮想マシンのマシン コードであるIL (または CIL または MSIL) にコンパイルされます。アセンブリで行うのと同じように、IL でプログラミングできます (誰かがそうしているのを見たことはありません)。経験、知識、そして根性があれば、Objective-C から IL へのコンパイラを問題なく作成できます。なんと、 .NET 用の関数型プログラミング言語 (F#)さえあります。メッセージング機能とライブラリ以外は、C# や VB.NET などと大差ありません。

なんて素晴らしいアイデアでしょう!Objective-C# など。

ここから始めることができます: Microsoft の IL に関するウィキペディア

于 2008-10-29T03:46:12.690 に答える
1

NObjectiveブリッジを使用すると、C# で既存の Objective-C クラスを操作したり、新しいクラスを作成したりできます。

また、 Visual Studio 2010と .NET 4の最終リリース後に、NObjective の DLR サポートを追加します。

于 2010-01-02T13:37:50.843 に答える
0

Objective-C とCocoaではなく、.Net 用の Objective-JCappuccinoはどうですか? Objective-J は Objective-C と同じくらい魅力的ですが、Objective-J は Objective-C よりも C# に近いです (ポインタやガベージ コレクションがないなど)。

最近、カプチーノ開発者フォーラムでこれについて質問したところ、ジュラシック (.NET 用の JavaScript コンパイラ) を勧められました。彼らはまた、Cappuccino が IronJS でうまく動作するとも言いました。つまり、コンポーネント (Objective-J → JavaScript → .NET) はあるように見えますが、それらをリンクするブリッジを構築する必要があります。

于 2011-01-22T21:36:40.263 に答える