Cocoa/Cocoa Touchの多くのクラスにはNSという接頭辞が付いています。どういう意味ですか?
それは NeXTSTEP 遺産からのものです。
Cocoaフレームワークの元のコードは NeXTSTEP ライブラリFoundationとAppKit(これらの名前はまだAppleのCocoaフレームワークで使われています)から来ています、そしてNeXTSTEPのエンジニアはシンボルにNSを付けることを選びました。
Objective-CはCの拡張であり、C++のように名前空間がないため、シンボルが衝突しないように一意のプレフィックスを先頭に付ける必要があります。これは、フレームワークで定義されているシンボルにとって特に重要です。
あなたのコードがあなたのシンボルを使うことが唯一の可能性があるようにあなたがアプリケーションを書いているならば、あなたはこれについて心配する必要はありません。しかし、あなたが他の人の使用のためにフレームワークやライブラリを書いているなら、あなたはまたあなたのシンボルにユニークな接頭辞を付けるべきです。 CocoaDevにはページがあります ここでCocoaコミュニティの多くの開発者が彼らの "選ばれた"接頭辞をリストしました。 このSOディスカッション も役に立ちます。
NeXTSTEPまたは NeXTSTEP /Sあなたが誰を求めているかによります。
Sunはしばらくの間OpenStepにかなり大きな投資をしました。当時の財団として知られていなかったにもかかわらず、太陽が財団の大部分のものを絵に入れる前に、接頭辞NX、 NeバツT、そしていつかSunが絵を描く直前にすべてがNSに改名されました。 Sは当時Sunの略ではなかったが、Sunが一般的な合意に踏み込んだ後は、Sunが彼らの関与を尊重することになったということでした。
私は実際にこれについての参照を持っていました、しかし私は今それを見つけることができません。私はそれをまた見つけたら/私はポストを更新する。
それはNeXTSTEP(= NS)の遺産です。 NeXTはSteve Jobsが1985年にAppleを辞任した後に結成したコンピュータ会社であり、NeXTSTEPはそれがObj-C言語とランタイムを一緒にしたオペレーティングシステム(UNIXベース)だった。そのライブラリとツールと共に、NeXTSTEPは後にOpenStepと名前が変更され(これはNeXTがSunと共同で開発したAPIの名前でもありました)、後にCocoaになりました。
これらの異なる名前は実際にはかなり混乱しやすいものです(特に、名前の中には大文字または小文字の違いだけで異なるものがあるため)。説明のためにこれを試してください。
アップルの開発者向けドキュメントから:
歴史的注意:あなたが遭遇する多くのクラスがなぜ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_(API)Wikipedia :
(強調を追加)
Cocoaクラスは頭字語 "NS"で始まります(OpenStepのNeXT-Sun作成のどちらかを表します、またはOpenStepフレームワークの元々の独自用語では、NeXTSTEP):NSString、NSArrayなど.
Foundation Kit 、もっと一般的には Foundation は、最初に OpenStep に登場しました。 Mac OS Xでは、Core Foundationに基づいています。 Foundationは、文字列と値の操作、コンテナーと反復、分散コンピューティング、実行ループ、およびグラフィカルユーザーインターフェイスに直接関連しないその他の機能を提供する汎用のオブジェクト指向ライブラリです。 フレームワーク内のすべてのクラスと定数に使用される "NS"プレフィックスは、CocoaのOPENSTEP遺産から来ています NeXT と Sun によって共同開発されました。
NeXTが(NeXTSTEPオペレーティングシステムとは対照的に)NeXTSTEP APIを定義していたとき、彼らはNXConstantStringのように接頭辞NXを使いました。彼らがSunでOpenStep仕様を書いていたとき(OPENSTEPオペレーティングシステムと混同しないように)、彼らはNSObjectのようにNS接頭辞を使いました。
基本的にNSはN ext S TEPから来ています。これはAppleがNextを買収したときにMac OS Xになった最初のオペレーティングシステムです。
他に何か説明したいのですが、それがまさに必要な理由です。
C++には名前空間があり、ほとんどすべてが入りますstd
これがstd :: stringを持っている理由です。
名前空間が使用されるので、あなたがミスをするのは難しいです、そしてあなたはシステムのものと衝突することなくあなた自身のクラス文字列を書くことができます。
Objective-CはCのスーパーセットですが、名前空間を含まないため、上記と同じ理由ですべてのシステムクラスの先頭にNSまたはその他の奇妙な接頭辞が付きます。
これは、すべてのDirectXクラスの先頭にD3Dを付ける方法や、すべてのOpenGLクラスの先頭にglを付ける方法と同じです。
つまり、Core AnimationでNS、CAと表示される場合は、NSを使用して自分のクラスに名前を付けるべきではありません。またはCore GraphicsではCGこれはシステムフレームワークへの呼び出しであることがわかります。
Swiftは名前空間をサポートし、StringなどのコアタイプをNS同等のものにマッピングするため、Swiftはこの規則を変更します。
Bill Bumgarner 別名@bbum、 を知っておくべき人、2005年に CocoaBuilderメーリングリストに投稿 :
NSの接頭辞が効いた後、Sunは少し写真に入りました。 NS接頭辞は、NeXTSTEP 3.0からNeXTSTEP 4.0(OpenStepとも呼ばれる)への移行中にパブリックAPIで発生しました。 4.0より前では、少数のシンボルでNXプレフィックスが使用されていましたが、システムライブラリによって提供されるほとんどのクラスの頭にはまったく付けられませんでした。
誰もが1993/1994年まで接頭辞NX(NeXT用)が使われたことに同意しているようです、そして Appleの文書は を言います:
1994年9月に公開された正式なOpenStep APIは、FoundationとApplication Kitの間でAPIを分割した最初のもので、最初に "NS"プレフィックスを使用したものです。
それはNeXTSTEP遺産からのものです。
次の一歩。これは、NeXTSTEP(以降のOS X)やその他すべての関連アプリなどを書くために、NexTによってObjective-Cが作成されたときからの遅れです。 Cの要素なので、Objective-Cでは、追加の基本要素 'NSString'です。