9

私は、GNUstep を使用して Windows と Linux で使用するつもりで Cocoa アプリに取り組んでいます。私はこれまで Objective-C 2.0 の機能を避けてきましたが、少なくともプロパティを使い始めたいと思っています。Google が私に言っているように見えることは (私はこの件について多くを見つけるのに苦労していますが)、現在、Objective-C 2.0 の機能は GNUstep で動作しないということです。GNUstep が @property と @synthesize をサポートする計画があるかどうか知っている人はいますか?

それらを「拡大」するための良い戦略があるのだろうか?@property と @synthesize を使用するコードを、Objective-C 2.0 の機能を使用しないコードに展開できるプログラムを確かに想像できますが、そのようなことに対する需要があまりないのではないかと心配しているので、おそらくそうしません'見つけることができません。

来年かそこらで GNUstep が @property と @synthesize をサポートする可能性は十分にあると思いますか?

4

3 に答える 3

12

これは数か月遅れていますが、答えはイエスです。GNUstep は、Objective-C 2.0 の機能 (およびブロック) をサポートします。現在、ほぼすべてが実装されていますが、テストとデバッグが必要です。これらの機能には gcc ではなく Clang が必要であり、現在はトランク バージョンを使用する必要があります。

詳細については、このスレッドの David Chisnall の説明を参照してください: http://groups.google.com/group/gnu.gnustep.discuss/browse_thread/thread/b0a5fa4e3be71bb1#

于 2009-11-25T02:32:23.330 に答える
3

いいえ、プロパティをサポートする計画があるかどうかはわかりませんが、GNUstep が実行可能であり続けることを計画している場合 (たとえ現在の限られた程度であっても)、これを優先する必要があります。GNUstep が Objective-C 2.0 の機能を採用することを決定しない限り、それと Apple の実装との間のギャップにより、適切なクロスプラットフォーム コードを書くことがますます難しくなります。(ほとんどの開発者にとって、それはすでに無意味な境界線です。)

私は通常、本質的に「それをしないでください、それは悪い考えです」という答えは嫌いですが、特に実用性の観点から、これについて@Jonathanに同意する必要があります. コードはクロスプラットフォームでコンパイルできますが、ユーザーがアプリを使用するためだけにランタイムをインストールする必要がある場合、誰かがアプリを使用する可能性は大幅に低下します。

This SO answerはそれをうまくまとめています。それを読んで、あなた自身の結論を引き出すことをお勧めします。

また、「objective-c」タグには 3280 を超える質問があり、「gnustep」タグには 9 があることも考慮する価値があります。質問の量が品質の指標であると言っているわけではありませんが、活動や関心と平行しており、非常に重要です。おそらく、このサイトには GNUstep の専門知識を持つ少数の人々がいます。したがって、検討している道を進むことを選択した場合、良い助けが得られる可能性は低くなります。

ところで、互換性という名目で新機能を避けるという考え方は、「最小公分母」の振る舞いであり、長い目で見れば、コードの洗練度や「機能性」を低下させます。これは、10.2 または 10.3 で利用可能な API のみを使用してコーディングするのと似ています。最近の OS X または iPhone の開発者は、過去の制限に妨げられずに、クールな新機能を利用したいと言うでしょう。最近では、ほとんどの場合、新しいアプリには 10.5 が必要です。古いバージョンのサポートは、下位互換性がある確立されたソフトウェアの特徴であり、多くのアプリは時間の経過とともに古い OS を削除することさえあります。

アプリケーションの販売を検討している場合、GNUstep 互換の API のみを使用すると、市場が大幅に制限され、実現できる洗練度や機能のレベルなど、基本的な方法でアプリが制限されることさえあります。アプリが商用化されない場合でも、一般的に、特定のプラットフォームに最適な言語とフレームワークを使用するメリットがあります。クロスプラットフォームのサポートを本当に探しているなら、Java の方が胸焼けが少なくてすむでしょう。(Java は間違いなく私のお気に入りの言語ではなく、Cocoa ではありませんが、多くのことをうまく実行します。) クライアントとプラットフォーム間で言語バージョンの問題は依然として同じですが、少なくともクロスプラットフォームであり、すべてのコンシューマー向けに設計されています。プラットフォームには、しっかりした Java サポートがあります。

于 2009-08-09T14:14:01.043 に答える
2

Objective-C の GNUstep 実装が Apple のアクセサー/ミューテーター合成のリードに従うかどうかはわかりませんが、Mac、Windows、および Linux 用のアプリを作成しようとしている場合、GNUstep はおそらく最良の選択ではありません。コードを Cocoa から GNUstep に移植するのは非常に簡単なはずですが (プロパティ宣言を変換するマクロを作成することさえできるかもしれません)、Linux で GNUstep を使用している人はほとんどおらず、Windows ではさらに少数です。クロスプラットフォームの OpenStep 実装のアイデアは気に入っていますが、現時点では採用に関してあまり実用的ではありません。

于 2009-08-09T06:08:49.910 に答える