Cocoa / Cocoa Touchの多くのクラスには、NSプレフィックスが付いています。どういう意味ですか?
9 に答える
Cocoa フレームワークの元のコードは、NeXTSTEPライブラリの Foundation と AppKit (これらの名前は、Apple の Cocoa フレームワークで今でも使用されています) に由来し、NextStep のエンジニアは、シンボルの前に NS を付けることを選択しました。
Objective-C は C の拡張であり、C++ のような名前空間がないため、シンボルが衝突しないように、シンボルには一意のプレフィックスを付ける必要があります。これは、フレームワークで定義されたシンボルにとって特に重要です。
コードでシンボルのみを使用する可能性が高いアプリケーションを作成している場合は、これについて心配する必要はありません。ただし、他のユーザーが使用するフレームワークまたはライブラリを作成している場合は、シンボルの前に一意のプレフィックスを付ける必要があります。CocoaDev には、Cocoa コミュニティの多くの開発者が「選択した」プレフィックスをリストしたページがあります。この SO ディスカッションも役立つ場合があります。
それはNeXTSTEPの遺産からのものです。
NEXT S TEP またはN eXTSTEP / S un は、質問者によって異なります。
Sun はしばらくの間、OpenStep に多額の投資を行っていました。Sun が登場する前は、当時は Foundation として知られていなかったものの、財団のほとんどのものは、N e X T を表すNXという接頭辞が付けられていました。Sun が登場する少し前に、すべてがNSに改名されました。当時、Sはおそらく Sun の略ではありませんでしたが、Sun が介入した後、S は Sun の関与を称えるものであるという一般的なコンセンサスが得られました。
私は実際にこれについてのリファレンスを持っていましたが、今は見つけられません。また見つけたら記事を更新します。
NextStep(=NS)の遺産です。NeXT は Steve Jobs が 1985 年に Apple を辞めた後に設立したコンピュータ会社で、NextStep は Obj-C 言語とランタイムを備えたオペレーティング システム (UNIX ベース) でした。そのライブラリとツールと共に、NextStep は後に OpenStep と改名され (これは、NeXT が Sun と共同で開発した API の名前でもありました)、後に Cocoa になりました。
これらの異なる名前は、実際には非常に紛らわしいものです (特に、一部の名前は文字が大文字か小文字かだけが異なるため..)、説明のためにこれを試してください:
Apple の開発者ドキュメントから:
歴史的なメモ: 直面するクラスの多くに NS 接頭辞が付いている理由を知りたい場合は、Cocoa と Cocoa Touch の過去の歴史が原因です。Cocoa は、NeXTStep オペレーティング システム用のアプリを構築するために使用される収集されたフレームワークとして誕生しました。Apple が 1996 年に NeXT を買収したとき、既存のクラス名を含め、NeXTStep の多くが OS X に組み込まれました。Cocoa Touch は iOS 版の Cocoa として導入されました。一部のクラスは Cocoa と Cocoa Touch の両方で使用できますが、各プラットフォームに固有のクラスも多数あります。NS や UI (iOS のユーザー インターフェイス要素) などの 2 文字のプレフィックスは、Apple が使用するために予約されています。
(強調追加)
Cocoa クラスは、 「NS」という頭字語で始まります( NeXT-Sun で作成された OpenStep、または OpenStep フレームワークの元の独自用語であるNeXTSTEPを表します): NSString、NSArray など。
Foundation Kit、またはより一般的には単にFoundationは、 OpenStepで最初に登場しました 。Mac OS X では、Core Foundation に基づいています。Foundation は、文字列と値の操作、コンテナーと反復、分散コンピューティング、実行ループ、およびグラフィカル ユーザー インターフェイスに直接関連付けられていないその他の機能を提供する汎用オブジェクト指向ライブラリです。フレームワーク内のすべてのクラスと定数に使用される「NS」接頭辞は、 NeXTとSunが共同で開発した Cocoa の OPENSTEP 遺産に由来します。
NeXTが(NEXTSTEPオペレーティングシステムではなく)NextStep APIを定義していたとき、NXConstantStringのようにプレフィックスNXを使用していました。彼らがSunでOpenStep仕様を書いていたとき(OPENSTEPオペレーティングシステムと混同しないでください)、NSObjectのようにNSプレフィックスを使用しました。
Bill Bumgarner別名 @bbum は、2005 年に CocoaBuilder メーリング リストに次のように投稿しました。
Sun は、NS プレフィックスが登場してから少し遅れて登場しました。NS プレフィックスは、NeXTSTEP 3.0 から NeXTSTEP 4.0 (OpenStep とも呼ばれます) への移行中にパブリック API で発生しました。4.0 より前は、一握りのシンボルが NX 接頭辞を使用していましたが、システム ライブラリによって提供されるほとんどのクラスにはまったく接頭辞がありませんでした -- List、Hashtable、View など...
プレフィックス NX (NeXT の略) が 1993/1994 年まで使用されていたことに誰もが同意しているようで、Apple のドキュメントには次のように書かれています。
1994 年 9 月に公開された公式の OpenStep API は、Foundation と Application Kit の間で API を分割した最初の API であり、"NS" プレフィックスを使用した最初の API です。