「NSString Class Reference」の編集履歴(バックアップ)一覧はこちら

NSString Class Reference」(2010/02/04 (木) 22:52:55) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

//0.下はいじらない Tags:&tags() //1.以下に続けてADCでの分類を書き込みリンクする。「NSHogeのクラスリファレンス」、まで書く &link_toppage(トップ) > [[リファレンス]] > Data Management: Strings, Text, & Fonts > NSString クラスリファレンス //2.リファレンス日本語名を見出し1で書く。wiki内のリンクで用いられるタイトルになる。翻訳元にもリンクする。 *NSString クラスリファレンス [[翻訳元>http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html]] //3.翻訳元の最終更新日を書く このページの最終更新:&date() ADCの最終更新:2009-08-28 //4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。 //5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck! //本文開始↓ |BGCOLOR(#eef):継承するクラス |BGCOLOR(#eef):[[NSObject>NSObject Class Reference]]| |準拠しているプロトコル|[[NSCoding>NSCoding Protocol Reference]]&br()[[NSCopying>NSCopying Protocol Reference]]&br()[[NSMutableCopying>NSMutableCopying Protocol Reference]]&br()[[NSObject (NSObject)>NSObject Protocol Reference]]| |BGCOLOR(#eef):フレームワーク|BGCOLOR(#eef):/System/Library/Frameworks/Foundation.framework| |使用可能な環境|Mac OS X v10.0 以降| |BGCOLOR(#eef):宣言ファイル|BGCOLOR(#eef):NSPathUtilities.h&br()NSString.h&br()NSURL.h| |コンパニオンガイド|String Programming Guide for Cocoa&br()Property List Programming Guide| |BGCOLOR(#eef):サンプルコード|BGCOLOR(#eef):CoreRecipes&br()From A View to A Movie&br()FunHouse&br()GLSLShowpiece&br()Quartz Composer WWDC 2005 TextEdit| **概観(Overview) ----  NSSringクラスは変更不能文字列を管理するオブジェクトのプログラマチックなインターフェースを宣言しています。(変更不能文字列とは生成時に定義され、その後変更できない文字列のことです。NSStringクラスはUnicode文字の配列(つまりUnicode文字列)を使って実装されています。) //NSString is implemented to represent an array of Unicode characters (in other words, a text string) わかんね^^  NSStringのサブクラスで変更可能なものがNSMutableStringクラスです。  NSStringクラスには二つのプリミティブメソッドがあります。lengthメソッドとcharacterAtIndex:メソッドです。これらのメソッドのインターフェースは他の全てのメソッドの基になっています。lengthメソッドはUnicode文字列の文字数を返します。characterAtIndex:メソッドは最初の文字を0とするインデックスで各文字にアクセスします。  NSStringクラスでは文字列の検索と比較の為のメソッドを宣言しています。また、文字列から数値を読み出すメソッドや、様々な方法で文字列を組み合わせるメソッド、文字列を様々な型(エンコーディング等)に変換するメソッド等も宣言しています。  Application KitではNSPragraphStyleクラスやそのサブクラスであるNSMutablePragraphクラスを使ってNSAttributedStringクラスで使われる段落やルーラーをカプセル化しています。さらに、文字列の描画に関するメソッドはNSString Application Kit Additions Referenceに詳細があるので、そちらを参照してください。  NSStringクラスはCore FoundationのCFString(CFStringRefを参照)と"toll-free bridged"です。これはつまり、関数やメソッド内のCore Foundationの型はブリッジされたFoundationの型と相互に交換可能だということを意味しています。したがって、メソッド中のNSString *パラメータはCFStringRefに、関数内のCFStringRefパラメータはNSStringインスタンスに書き換えることができる(コンパイラの警告を回避する為にはキャストが必要)、ということになります。これはNSStringのコンクリートクラスにも適用可能です。toll-free bridgingの詳細については、Interchangeable Data Typesを参照してください。 ***文字列オブジェクト(String Objects)  NSStringは、フレームワーク内の文字列を表すオブジェクトです。文字列をオブジェクトとして表現することで、他のどのオブジェクトでも文字列を扱うことができるようになります。こうした表現により、カプセル化の利点も得ることができます。その結果、文字列オブジェクトはどんなストレージやエンコーディングでも、単なる文字の配列である限りは効率よく扱うことができます。NSStringとNSMutableStringの二つのパブリッククラスのクラスタは、各々変更可能、不能な文字列のインターフェースを宣言しています。 |BGCOLOR(#eef):&bold(){注:}変更不能文字列とは生成時に定義され、その後変更できない文字列のことです。NSStringクラスはUnicode文字の配列(つまりUnicode文字列)を使って実装されています。変更不能文字列を生成、管理したいときはNSStringを使い、生成後に文字列を構成して管理したいときはNSMutableStringクラスを使用してください。|  NSStringクラスやNSMutableStringクラスを使って生成されたオブジェクトは文字列オブジェクトとして(結果的に同じであれば単なる文字列として)参照されます。C文字列型は標準のchar *型として参照されます。クラスクラスタでは当たり前のことですが、文字列オブジェクトのインスタンスは正確にはNSStringクラスやNSMutableStringクラスのインスタンスではなく、非公開なサブクラスのインスタンスです。ただしクラスが非公開でも、そのインターフェースはスーパークラスであるNSStringクラスとNSMutableStringクラスで宣言され、公開されています。これらの文字列のクラスはクラス同士の変換を容易にする為にNSCopyingプロトコルとNSMutableCopyingプロトコルに準拠しています。 ***文字への理解(Understanding characters)  文字列オブジェクトはユニコード文字(ユニコードはユニコードの登録商標です)の配列を表します。文字列の長さを知るのにlengthメソッドを使えますし、特定の文字を得るのにcharacterAtIndex:メソッドが使えます。これらの「プリミティブ」メソッドは文字列オブジェクトの基本的なアクセス手段を提供します。  しかしほとんどの場合、文字列の使われ方はそれ自体を一つの実体として扱う高レベルなものです。具体的には、文字列同士の比較、検索、統合等です。一つずつ文字にアクセスしたい場合、ユニコード文字エンコーディングについて、特に文字の並び順に起因する問題について理解する必要があります。詳細はThe Unicode Standard(ユニコード協会:ボストン 著:アディソン,ウェスレー)か、[[ユニコード協会のウェブサイト>http://www.unicode.org/]]を参照してください。また、String Programming Guide for CocoaのCharacters and Grapheme Clustersも参考にしてください。 ***UTF-16エンコーディングの解析(Interpreting UTF-16-encoded data)  UTF-16でエンコードされた文字列(またはUTF-16として扱うバイトストリーム)から文字列オブジェクトを生成するときにバイトオーダーが明らかでなく、バイトオーダーを指定するBOM(バイトオーダーマーク)もない場合は、NSSringオブジェクトはUTF-16文字列をビッグエンディアンであると仮定します。ユニコード文字の配列からNSStringオブジェクトを生成するときに返される文字列は常にネイティブエンディアンなので、そのユニコード文字列は必ずネイティブエンディアンのユニコード文字で構成されます。 ***オブジェクトの割当(Distributed objects)  オブジェクトの割当の関係上、変更可能文字列は参照渡しで、変更不能文字列は値渡しで渡されます。 ***サブクラス作成時の注意(Subclassing Notes)  NSString(NSMutableString)クラスのサブクラスを作ることはできますが、その場合文字列を保存しておく領域(サブクラスには継承されません)と、二つのプリミティブメソッドが必要になります。抽象クラスであるNSStringクラスとNSMutableStringクラスは、ほとんどが非公開のクラスクラスタの公開されたインターフェースです。そして、その具体クラスはその状況に適した文字列オブジェクトを生成して返します。独自の具体クラスを作るときは、そのクラスクラスタの要求を満たしていることを確認してください(&link_anchor(Methods to Override){「オーバーライドするメソッド(Methods to Override)」}で解説します)。  NSStringクラスのサブクラスが本当に必要か確認してください。そのサブクラスは文字列を表し、それ以外は表すべきではありません。既に述べたように、サブクラスが持つべき唯一の属性は、文字領域の長さとその管理、そして個々の文字にアクセスする手段です。NSStringクラスのサブクラスを作る正当な理由としては、異なるバッキングストアを(おそらくはパフォーマンス工場の為に)提供したい場合や、メモリ管理等のオブジェクトの機能に違った実装をしたい場合等があります。もしNSStringクラスのサブクラスに重要でない属性やメタデータを加えたいときには、代わりにオブジェクトコンポジションを使用する方が良いでしょう(&link_anchor(Alternatives to Subclassing){「サブクラス作成の代わりに(Alternatives to Subclassing)」}を参照)。Cocoaでは既にこの例として、NSAttributedStringクラスが提供されています。 ***&anchor(option=nolink,Methods to Override){オーバーライドするメソッド(Methods to Override)}  NSStringクラスのサブクラスはすべてプリミティブメソッドであるlengthメソッドとcharacterAtIndex:メソッドをオーバーライドする必要があります。これらのメソッドはバッキングストアの文字列を処理しなければなりません。このバッキングストアには、静的配列、動的に確保された領域、標準のNSStringオブジェクト、その他のデータ型やデータ構造が使えます。代わりの実装を提供したい他のメソッドを一部でも全てでもオーバーライドすることもできます。例えば、パフォーマンス向上の為に[[getCharacters:range:]]メソッドをオーバーライドしてより速い実装に変えることが推奨されます。  サブクラスが管理しているバッキングストアに対応したいイニシャライザをサブクラスに実装したくなることがあるかもしれません。NSStringクラスには指定イニシャライザが無いので、サブクラスのイニシャライザではsuperクラスの[[init]]メソッドを呼び出すだけで構いません。NSStringクラスは[[NSCopying]]プロトコル、[[NSMutableCopying]]プロトコル、[[NSCoding]]プロトコルに準拠しています。サブクラスのインスタンスを複製、エンコードしたい場合は、これらのプロトコルのメソッドをオーバーライドしてください。  [[hash]]メソッドをオーバーライドするべきではないということに気をつけてください。 ***&anchor(option=nolink, Alternatives to Subclassing){サブクラス作成の代わりに(Alternatives to Subclassing)}  たいていの場合、NSStringクラス(ついでに言うなら抽象クラスや、クラスクラスタの公開クラスなども)のサブクラスを作成する代わりにオブジェクトコンポジションを使用する方がより簡単で良い結果が得られます。サブクラスを作成するのは、文字列オブジェクトに必ずしも必要でない属性やメタデータを追加するような特別な場合のみです。オブジェクトコンポジションでは、カスタムクラス(通常NSObjectのサブクラス)はNSStringオブジェクトと一つかそれ以上のカスタムオブジェクトに要求されるメタデータを保持するインスタンス変数を持ちます。したがって、サブクラスのインターフェースは埋め込まれた文字列オブジェクトをメタデータにアクセスするメソッドを含むように設計してください。  既存のクラスに動作を追加したい場合は、NSStringクラスのカテゴリを書くことができます。しかし、このカテゴリは使用する全てのNSStringオブジェクトに作用するので、予期しない結果を引き起こすこともあることを覚えておいてください。 **採用しているプロトコル(Adopted Protocols) ---- [[NSCoding>NSCoding Protocol Reference]] encodeWithCoder: initWithCoder: [[NSCopying>NSCopying Protocol Reference]] copyWithZone: [[NSMutableCopying>NSMutableCopying Protocol Reference]] mutableCopyWithZone: **このクラスでできること(Tasks) ---- **クラスメソッド ---- **インスタンスメソッド ---- **定数(Constants) ---- ----
//0.下はいじらない Tags:&tags() //1.以下に続けてADCでの分類を書き込みリンクする。「NSHogeのクラスリファレンス」、まで書く &link_toppage(トップ) > [[リファレンス]] > Data Management: Strings, Text, & Fonts > NSString クラスリファレンス //2.リファレンス日本語名を見出し1で書く。wiki内のリンクで用いられるタイトルになる。翻訳元にもリンクする。 *NSString クラスリファレンス [[翻訳元>http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html]] //3.翻訳元の最終更新日を書く このページの最終更新:&date() ADCの最終更新:2009-08-28 //4.以下、用語は頻繁に出てくる単語の翻訳ガイドラインを参照しながら翻訳する。 //5.ある程度書き終わったらタグ(未完または完成、カテゴリ名×3)をつけて下線を引く(広告との境)。これで終了。それではGood Luck! //本文開始↓ |BGCOLOR(#eef):継承するクラス |BGCOLOR(#eef):[[NSObject>NSObject Class Reference]]| |準拠しているプロトコル|[[NSCoding>NSCoding Protocol Reference]]&br()[[NSCopying>NSCopying Protocol Reference]]&br()[[NSMutableCopying>NSMutableCopying Protocol Reference]]&br()[[NSObject (NSObject)>NSObject Protocol Reference]]| |BGCOLOR(#eef):フレームワーク|BGCOLOR(#eef):/System/Library/Frameworks/Foundation.framework| |使用可能な環境|Mac OS X v10.0 以降| |BGCOLOR(#eef):宣言ファイル|BGCOLOR(#eef):NSPathUtilities.h&br()NSString.h&br()NSURL.h| |コンパニオンガイド|String Programming Guide for Cocoa&br()Property List Programming Guide| |BGCOLOR(#eef):サンプルコード|BGCOLOR(#eef):CoreRecipes&br()From A View to A Movie&br()FunHouse&br()GLSLShowpiece&br()Quartz Composer WWDC 2005 TextEdit| **概観(Overview) ----  NSSringクラスは変更不能文字列を管理するオブジェクトのプログラマチックなインターフェースを宣言しています。(変更不能文字列とは生成時に定義され、その後変更できない文字列のことです。NSStringクラスはUnicode文字の配列(つまりUnicode文字列)を使って実装されています。) //NSString is implemented to represent an array of Unicode characters (in other words, a text string) わかんね^^  NSStringのサブクラスで変更可能なものがNSMutableStringクラスです。  NSStringクラスには二つのプリミティブメソッドがあります。lengthメソッドとcharacterAtIndex:メソッドです。これらのメソッドのインターフェースは他の全てのメソッドの基になっています。lengthメソッドはUnicode文字列の文字数を返します。characterAtIndex:メソッドは最初の文字を0とするインデックスで各文字にアクセスします。  NSStringクラスでは文字列の検索と比較の為のメソッドを宣言しています。また、文字列から数値を読み出すメソッドや、様々な方法で文字列を組み合わせるメソッド、文字列を様々な型(エンコーディング等)に変換するメソッド等も宣言しています。  Application KitではNSPragraphStyleクラスやそのサブクラスであるNSMutablePragraphクラスを使ってNSAttributedStringクラスで使われる段落やルーラーをカプセル化しています。さらに、文字列の描画に関するメソッドはNSString Application Kit Additions Referenceに詳細があるので、そちらを参照してください。  NSStringクラスはCore FoundationのCFString(CFStringRefを参照)と"toll-free bridged"です。これはつまり、関数やメソッド内のCore Foundationの型はブリッジされたFoundationの型と相互に交換可能だということを意味しています。したがって、メソッド中のNSString *パラメータはCFStringRefに、関数内のCFStringRefパラメータはNSStringインスタンスに書き換えることができる(コンパイラの警告を回避する為にはキャストが必要)、ということになります。これはNSStringのコンクリートクラスにも適用可能です。toll-free bridgingの詳細については、Interchangeable Data Typesを参照してください。 ***文字列オブジェクト(String Objects)  NSStringは、フレームワーク内の文字列を表すオブジェクトです。文字列をオブジェクトとして表現することで、他のどのオブジェクトでも文字列を扱うことができるようになります。こうした表現により、カプセル化の利点も得ることができます。その結果、文字列オブジェクトはどんなストレージやエンコーディングでも、単なる文字の配列である限りは効率よく扱うことができます。NSStringとNSMutableStringの二つのパブリッククラスのクラスタは、各々変更可能、不能な文字列のインターフェースを宣言しています。 |BGCOLOR(#eef):&bold(){注:}変更不能文字列とは生成時に定義され、その後変更できない文字列のことです。NSStringクラスはUnicode文字の配列(つまりUnicode文字列)を使って実装されています。変更不能文字列を生成、管理したいときはNSStringを使い、生成後に文字列を構成して管理したいときはNSMutableStringクラスを使用してください。|  NSStringクラスやNSMutableStringクラスを使って生成されたオブジェクトは文字列オブジェクトとして(結果的に同じであれば単なる文字列として)参照されます。C文字列型は標準のchar *型として参照されます。クラスクラスタでは当たり前のことですが、文字列オブジェクトのインスタンスは正確にはNSStringクラスやNSMutableStringクラスのインスタンスではなく、非公開なサブクラスのインスタンスです。ただしクラスが非公開でも、そのインターフェースはスーパークラスであるNSStringクラスとNSMutableStringクラスで宣言され、公開されています。これらの文字列のクラスはクラス同士の変換を容易にする為にNSCopyingプロトコルとNSMutableCopyingプロトコルに準拠しています。 ***文字への理解(Understanding characters)  文字列オブジェクトはユニコード文字(ユニコードはユニコードの登録商標です)の配列を表します。文字列の長さを知るのにlengthメソッドを使えますし、特定の文字を得るのにcharacterAtIndex:メソッドが使えます。これらの「プリミティブ」メソッドは文字列オブジェクトの基本的なアクセス手段を提供します。  しかしほとんどの場合、文字列の使われ方はそれ自体を一つの実体として扱う高レベルなものです。具体的には、文字列同士の比較、検索、統合等です。一つずつ文字にアクセスしたい場合、ユニコード文字エンコーディングについて、特に文字の並び順に起因する問題について理解する必要があります。詳細はThe Unicode Standard(ユニコード協会:ボストン 著:アディソン,ウェスレー)か、[[ユニコード協会のウェブサイト>http://www.unicode.org/]]を参照してください。また、String Programming Guide for CocoaのCharacters and Grapheme Clustersも参考にしてください。 ***UTF-16エンコーディングの解析(Interpreting UTF-16-encoded data)  UTF-16でエンコードされた文字列(またはUTF-16として扱うバイトストリーム)から文字列オブジェクトを生成するときにバイトオーダーが明らかでなく、バイトオーダーを指定するBOM(バイトオーダーマーク)もない場合は、NSSringオブジェクトはUTF-16文字列をビッグエンディアンであると仮定します。ユニコード文字の配列からNSStringオブジェクトを生成するときに返される文字列は常にネイティブエンディアンなので、そのユニコード文字列は必ずネイティブエンディアンのユニコード文字で構成されます。 ***オブジェクトの割当(Distributed objects)  オブジェクトの割当の関係上、変更可能文字列は参照渡しで、変更不能文字列は値渡しで渡されます。 ***サブクラス作成時の注意(Subclassing Notes)  NSString(NSMutableString)クラスのサブクラスを作ることはできますが、その場合文字列を保存しておく領域(サブクラスには継承されません)と、二つのプリミティブメソッドが必要になります。抽象クラスであるNSStringクラスとNSMutableStringクラスは、ほとんどが非公開のクラスクラスタの公開されたインターフェースです。そして、その具体クラスはその状況に適した文字列オブジェクトを生成して返します。独自の具体クラスを作るときは、そのクラスクラスタの要求を満たしていることを確認してください(&link_anchor(Methods to Override){「オーバーライドするメソッド(Methods to Override)」}で解説します)。  NSStringクラスのサブクラスが本当に必要か確認してください。そのサブクラスは文字列を表し、それ以外は表すべきではありません。既に述べたように、サブクラスが持つべき唯一の属性は、文字領域の長さとその管理、そして個々の文字にアクセスする手段です。NSStringクラスのサブクラスを作る正当な理由としては、異なるバッキングストアを(おそらくはパフォーマンス工場の為に)提供したい場合や、メモリ管理等のオブジェクトの機能に違った実装をしたい場合等があります。もしNSStringクラスのサブクラスに重要でない属性やメタデータを加えたいときには、代わりにオブジェクトコンポジションを使用する方が良いでしょう(&link_anchor(Alternatives to Subclassing){「サブクラス作成の代わりに(Alternatives to Subclassing)」}を参照)。Cocoaでは既にこの例として、NSAttributedStringクラスが提供されています。 ***&anchor(option=nolink,Methods to Override){オーバーライドするメソッド(Methods to Override)}  NSStringクラスのサブクラスはすべてプリミティブメソッドであるlengthメソッドとcharacterAtIndex:メソッドをオーバーライドする必要があります。これらのメソッドはバッキングストアの文字列を処理しなければなりません。このバッキングストアには、静的配列、動的に確保された領域、標準のNSStringオブジェクト、その他のデータ型やデータ構造が使えます。代わりの実装を提供したい他のメソッドを一部でも全てでもオーバーライドすることもできます。例えば、パフォーマンス向上の為にgetCharacters:range:メソッドをオーバーライドしてより速い実装に変えることが推奨されます。  サブクラスが管理しているバッキングストアに対応したいイニシャライザをサブクラスに実装したくなることがあるかもしれません。NSStringクラスには指定イニシャライザが無いので、サブクラスのイニシャライザではsuperクラスの[[init]]メソッドを呼び出すだけで構いません。NSStringクラスは[[NSCopying>NSCopying Protocol Reference]]プロトコル、[[NSMutableCopying>NSMutableCopying Protocol Reference]]プロトコル、[[NSCoding>NSCoding Protocol Reference]]プロトコルに準拠しています。サブクラスのインスタンスを複製、エンコードしたい場合は、これらのプロトコルのメソッドをオーバーライドしてください。  [[hash]]メソッドをオーバーライドするべきではないということに気をつけてください。 ***&anchor(option=nolink, Alternatives to Subclassing){サブクラス作成の代わりに(Alternatives to Subclassing)}  たいていの場合、NSStringクラス(ついでに言うなら抽象クラスや、クラスクラスタの公開クラスなども)のサブクラスを作成する代わりにオブジェクトコンポジションを使用する方がより簡単で良い結果が得られます。サブクラスを作成するのは、文字列オブジェクトに必ずしも必要でない属性やメタデータを追加するような特別な場合のみです。オブジェクトコンポジションでは、カスタムクラス(通常NSObjectのサブクラス)はNSStringオブジェクトと一つかそれ以上のカスタムオブジェクトに要求されるメタデータを保持するインスタンス変数を持ちます。したがって、サブクラスのインターフェースは埋め込まれた文字列オブジェクトをメタデータにアクセスするメソッドを含むように設計してください。  既存のクラスに動作を追加したい場合は、NSStringクラスのカテゴリを書くことができます。しかし、このカテゴリは使用する全てのNSStringオブジェクトに作用するので、予期しない結果を引き起こすこともあることを覚えておいてください。 **採用しているプロトコル(Adopted Protocols) ---- [[NSCoding>NSCoding Protocol Reference]] encodeWithCoder: initWithCoder: [[NSCopying>NSCopying Protocol Reference]] copyWithZone: [[NSMutableCopying>NSMutableCopying Protocol Reference]] mutableCopyWithZone: **このクラスでできること(Tasks) ---- **クラスメソッド ---- **インスタンスメソッド ---- **定数(Constants) ---- ----

表示オプション

横に並べて表示:
変化行の前後のみ表示:
目安箱バナー