Simple Table(2)~画像の追加

2010. 10. 31
●画像の追加

続いてセルの左端に画像を追加してみます。

885

本書ではApress社のサイト内のサンプルコードの『Beginning iPhone Development Projects Oct 12 2009/08 Simple Table』下にあるstar.png(25x25ピクセル)を自身のSimple TableプロジェクトにコピーしてResourcesに追加していますが、ここでは手持ちのsw.png(52x46ピクセル)を使用しています。
(太字が追加した部分)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];
    }

    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listData objectAtIndex:row];
    UIImage *image = [UIImage imageNamed:@"sw.png"];
    cell.image = image;

    return cell;
}

886

使用する画像のファイル名を指定して、imageNamed:メソッドでUIImageオブジェクトを作成し、imageプロパティで設定し表示します。

ちなみに元画像sw.pngは52x46ピクセルですが、実測してみたところデフォルトでのセルの高さは43ピクセルであり、それ以上の画像を指定した場合は高さ43ピクセルにアスペクトを保持したまま縮小されるようです。

(デバイスの向きがポートレートの場合)画像の幅は画面いっぱいの320ピクセルまで表示されますが、当然ラベルが見えなくなります。


image

@property(nonatomic, retain) UIImage *image

セルのコンテンツとして使用する画像です。
(iOS 3.0では非推奨です。代わりにimageViewプロパティでUIImageViewオブジェクトを取得し、カプセル化した画像を取得または設定して使用してください)

このプロパティのデフォルト値はnilです。
(画像はありません)

画像はタイトルの左側に配置されます。


●画像表示の改良点

この状態でも動作しますが、imageプロパティはiOS 3.0以降非推奨となっていますのでimageViewプロパティに置換します。
(太字が修正した部分)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];
    }

    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listData objectAtIndex:row];
    UIImage *image = [UIImage imageNamed:@"sw.png"];
    cell.imageView.image = image;
    return cell;
}

887

texttextLabelに置き換えた時と同様に、imageimageViewに置換する際には戻り値のクラスがUIImageからUIImageViewに変わるので、cellに対しては.imageView.imageという記述になります。


imageView

@property(nonatomic, readonly, retain) UIImageView *imageView

テーブルセルのイメージビューを返します。
(読み込みのみ)

テーブルビューのイメージビュー(UIImageViewオブジェクト)を返します。
初期設定では画像が設定されていません。

画像を設定するとラベルの前に、セルの左側に表示されます。

UITableViewCellは、セルを生成する前にイメージビューオブジェクトをを生成します。



参考文献

UIImageViewCell Class Reference

Deprecated UITableView Cell Methods

はじめてのiPhone3プログラミングはじめてのiPhone3プログラミング
(2009/12/17)
Dave Mark、Jeff LaMarche 他

商品詳細を見る

Simple Table(1)~テキストの表示

2010. 10. 30
前回から2週間以上間が空いてしまいましたが、『はじめてのiPhoneプログラミング』の次のお題はテーブルビューです。

以前『iPhone SDKプログラミング大全』の勉強の際に触れたこともありますので、復習を兼ねて進めていきます。
(過去記事は『テーブル(1)』『テーブル(2)』『テーブル(3)』を参照してください)

ここでは最初にSimple Tableという、プレーンスタイルのセクションもインデックスも無い単純な構造のテーブルから始めています。

882

コントローラのソースコード内に記述した配列を表示し、画像の追加とデリゲートによる処理(フォントや行の高さのサイズ変更)を学びます。


●プロジェクトの作成

View-based Applicationテンプレートで、プロジェクト名を『Simple Table』とします。

877


●nibファイルの編集

画面全体にテーブルビューを貼り付けます。

Simple_TableViewController.xibをダブルクリックしてInterface Builderで開き、LibraryウィンドウからViewウィンドウへTable Viewをドラッグ&ドロップします。

878

UITableViewオブジェクトはデータソースとデリゲートを持つ必要があります。

今回はデータソースもデリゲートもビューコントローラ(Simple_TableViewController)で行うので、InspectorウィンドウのConnectionsタブを開き、『Outlets』の『dataSource』と『delegate』をDocumentウィンドウのFile's Ownerに接続します。

879

接続が完了したら保存してXcodeに戻ります。


●ヘッダファイルの編集

Simple_TableViewController.hを開き、デリゲート(UITableViewDelegate)とデータソース(UITableViewDataSource)プロトコルを導入し、データソースとなる配列listDataを定義します。
(太字が追加した部分)

#import <UIKit/UIKit.h>

@interface Simple_TableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    NSArray *listData;
}

@property (nonatomic, retain) NSArray *listData;

@end

880


●ソースファイルの編集

Simple_TableViewController.mを開き、配列listDataとデータソースメソッドの実装を行います。
(太字が追加・変更した部分)

#import "Simple_TableViewController.h"

@implementation Simple_TableViewController

@synthesize listData;

#pragma mark Table View Controller Methods


/*
// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
    // Custom initialization
    }
    return self;
}
*/

/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray *array = [[NSArray alloc] initWithObjects:@"Yoshika", @"Mio", @"Minna",
    @"Lynette", @"Perrine", @"Erica", @"Gertrud", @"Francesca", @"Charlotte", @"Eila",
     @"Sanya", nil];
    self.listData = array;
    [array release];
}


// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}


- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;

}

- (void)dealloc {
    [listData release];
    [super dealloc];
}

#pragma mark -
#pragma mark Table View Data Source Methods

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.listData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SimpleTableIdentifier] autorelease];
    }

    NSUInteger row = [indexPath row];
    cell.text = [listData objectAtIndex:row];
    return cell;
}


@end

881

今回はinitWithNibName:bundle:メソッド(nibファイルを読み込んでビューコントローラを初期化)はコメントアウトを解除していません。

これまで特に追記することが無くてもメソッドを有効にしていましたが、何かあったのでしょうか?

一方、shouldAutorotateToInterfaceOrientation:メソッド(アプリケーションで有効なデバイスの向きを指定)はコメントアウトを解除しています。
(特に追記はしていません)

・viewDidLoad

(旧版の)本書中およびApress社のサイト内のサンプルコードにおいても、メソッドの最後にスーパークラスによる初期化([super viewDidLoad];)が入っているのが気になります。

過去の勉強では、まず最初にスーパークラスによる初期化を行い、アプリケーション固有の初期設定を後から追加して行うものと記憶しているので記述順序が逆だと思うのですが、本書中にこの辺の説明が無いのでよく分かりません。

ここではこれまで通りに、スーパークラスによる初期化後に個別の初期化を行うようにしています。

initWithObjects:メソッドで新規にarray配列を作成し、listDataプロパティで配列を代入し、array配列は解放します。

・dealloc

listDataプロパティの解放を追記しています。

・tableView:numberOfRowsInSection:

tableView:numberOfRowsInSection:はUITableViewDataSourceプロトコルのメソッドで、指定したテーブルビューにおけるセクションの行数を返します。

後述するtableView:cellForRowAtIndexPath:と共に必須メソッドとなっています。

ここではviewDidLoadで作成したlistData配列の要素数をcountメソッドで与えています。

・tableView:cellForRowAtIndexPath:

tableView:cellForRowAtIndexPath:は、指定したテーブルビューにおけるセルの内容を返します。

このメソッドの中身は少々複雑になっていて、セルに配列の内容を単純に渡すだけでなく、

・過去に表示したセルが再利用できるか?
・再利用可能でない場合に表示するセルを作成

という判別をしています。

これにより、膨大な量の要素を持つ配列でも起動時間の短縮や、メモリの効率的な使用が可能になります。

この辺りの説明は、本書(はじめてのiPhoneプログラミング)の説明が分かり難いです。

iPhone SDKプログラミング大全』での説明が簡潔で分かり易いのですが、一冊の本としてはちょっと???なので強くお薦めはしかねるのが困った所。
(初学者がこれで勉強しようとするには不向きですが、ある程度勉強した後で一通り読んで、何か困った時に読み返すようなものかもしれません)

iPhoneプログラミングUIKit詳解リファレンス』の説明は『はじめてのiPhoneプログラミング』よりは分かり易いのですが、説明文の6~7割がクラス名とメソッド名なので少し読み難いです。
(初学書ではなく困った時に見るリファレンスなので、助長な説明が無いのが正しいのですが)

この手の技術書こそ数が出ないものですし、一般書店では流通していなく、単語検索の必要性が高くて、ページ数も多くて重くかさばるのですから真っ先に電子化されても良さそうだと思うんですが・・・。
(7割方同じ内容の改訂版や増補版を同じような値段で買い直しさせるなら、旧版所持者には格安でアップデートさせるとかあっても良さそうな気がしますが、どうなんでしょう?)

閑話休題。

まず最初にセルを再利用する際に用いられる識別子SimpleTableIdentifierを作ります。

セル生成時に指定し再利用時に判別するのに用いられるもので、このテーブルビューを扱っている間は保持している必要があるためstaticにしています。

次にdequeueReusableCellWithIdentifier:メソッドで再利用識別子を指定し、再利用可能なセルがあればここで返されます。

再利用可能なセルが無い場合(始めてセルを生成する、あるいは以前生成されたセルが既に破棄されている場合)はnilが返されるのでif文で判別し、initWithFrame:reuseIdentifier:メソッドでセルを新規作成します。

引数frameはテーブルビューが自動的に位置とサイズを最適化するのでCGRectZero(位置0,0、サイズ0,0)を、再利用識別子はSimpleTableIdentifierを指定しています。

そしてインデックスパス(階層構造の配列に簡便にアクセスするためのパス)の行番号を取得し、objectAtIndex:メソッドでlistData配列から取得した行番号の内容をセルのtextに割り当て、返します。

882


Geometric Zeros

ゼロの点、矩形、サイズです。

const CGPoint CGPointZero;
const CGRect CGRectZero;
const CGSize CGSizeZero;

CGPointZero

位置が(0,0)の定数の点です。
ゼロ点はCGPointMake(0,0)と同じです。

CGRectZero

位置が(0,0)で幅と高さが0である定数の矩形です。
ゼロ矩形はCGRectMake(0,0,0,0)と同じです。

CGSizeZero

幅と高さが0である定数のサイズです。
ゼロサイズはCGSizeMake(0,0)と同じです。


text

@property(nonatomic, copy) NSString *text

セルのテキストです。
(iOS 3.0では非推奨です。代わりにtextLabeldetailTextLabelプロパティを使用してください)

デフォルトはnilです。
(テキストはありません)


●改良点

この状態でも動作はしますが、使用しているメソッドの内、initWithFrame:reuseIdentifier:textはiOS 3.0以降非推奨になっていますので、initWithStyle:reuseIdentifier:textLabelに置き換えます。
(太字が修正した部分)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier] autorelease];
    }

    NSUInteger row = [indexPath row];
    cell.textLabel.text = [listData objectAtIndex:row];
    return cell;
}

883


textLabel

@property(nonatomic, readonly, retain) UILabel *textLabel

テーブルセルの主なテキストコンテンツに使われるラベルを返します。
(読み込みのみ)

セルの主なラベルを保持します。

UITableViewCellは、指定したセルスタイルのセルを生成し、適したラベルを追加します。

現在定義されているセルスタイル内の主なラベルに付いては『Cell Styles』を参照してください。



参考文献

CGGeometry Reference

UITableViewCell Class Reference

はじめてのiPhone3プログラミングはじめてのiPhone3プログラミング
(2009/12/17)
Dave Mark、Jeff LaMarche 他

商品詳細を見る

iPhoneプログラミングUIKit詳解リファレンスiPhoneプログラミングUIKit詳解リファレンス
(2010/01/12)
所 友太

商品詳細を見る

iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)iPhone SDK 3 プログラミング大全 実践プログラミング (MacPeople Books)
(2009/09/08)
木下 誠

商品詳細を見る

NSIndexPathクラス

2010. 10. 30
●概要

NSIndexPathクラスは、ネスト(入れ子)された配列コレクション内の特定のノードへのパスを表します。

このパスはインデックスパスとして知られています。

インデックスパス内の各インデックスは、ツリー内のあるノードから、子となる別の配列へと深くなるノードのインデックスを表します。

図1にインデックスパスが 1.4.3.2 と指定したパスを表します。


図1 インデックスパス 1.4.3.2

884

NSIndexPathオブジェクトは単一で共有されています。

インデックスパスが指定したインデックスを含む、またはインデックスが既に存在している場合は、そのオブジェクトが新しいインスタンスの代わりに返されます。



●タスク

●インデックスパスの生成

+ indexPathWithIndex:
+ indexPathWithIndexes:length:
– initWithIndex:
– initWithIndexes:length:

●インデックスパスの照会

– getIndexes:
– indexAtPosition:
– indexPathByAddingIndex:
– indexPathByRemovingLastIndex
– length

●インデックスパスの比較

– compare:



●クラスメソッド



●インスタンスメソッド


initWithIndexes:length:

- (id)initWithIndexes:(NSUInteger *)indexes length:(NSUInteger)length

指定した長さのインデックスパスを持つNSIndexPathオブジェクトを生成し、初期化します。

indexes:インデックスパスを作成する、インデックスの配列を指定します。

length:インデックスパスを含めるノード数を指定します。



参考文献

NSIndexPath Class Reference

NSStringクラス

2010. 10. 25
●概要

NSStringクラスは不変文字列を管理するオブジェクトのプログラムインターフェイスを宣言します。
(不変文字列は、生成した後で変更できないテキスト文字列として定義されます。NSStringは、Unicode文字の配列すなわちテキスト文字列として表されて実装されます。)

NSStringの可変サブクラスはNSMutableStringです。

NSStringクラスは、lengthcharacterAtIndex:の2つのプリミティブメソッドを持ち、インターフェイスの他の全てのメソッドの基礎を提供します。

lengthメソッドは、文字列中のUnicodeの文字数の合計を返します。

characterAtIndex:は、文字列内の各文字に0から始まるインデックス番号を割り当て、アクセスすることができます。

NSStringは文字列の検索と比較をするメソッドを宣言します。

また、文字列から数値を読み込んだり、様々な方法で文字列を結合したり、(エンコードや大文字/小文字の変換など)異なる形式の文字列を変換するメソッドも宣言しています。

Application Kitはまた、NSParagraphStyleとそのサブクラスであるNSMutableParagraphStyleによる段落のカプセル化や、NSArrtibutedStringクラスによる書式属性を使用しています。

文字列の描画に関する詳細は、『Application Kit』の『NSString Application Kit Additions Reference』を参照してください。

NSStringには『toll-free bridged』の対象としてCore FoundationのCFStringがあります。
CFStringRefを参照してください)

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

したがってNSString *パラメータを参照する際、CFStringRefに渡し、CFStringRefパラメータとして参照でき、(コンパイラの警告を抑えるために型変換をして)NSStringインスタンスに渡すこともできます。

この橋渡しは、NSStringの実際のサブクラスに適用されます。



●タスク

●文字列の生成と初期化

+ string
– init
– initWithBytes:length:encoding:
– initWithBytesNoCopy:length:encoding:freeWhenDone:
– initWithCharacters:length:
– initWithCharactersNoCopy:length:freeWhenDone:
– initWithString:
– initWithCString:encoding:
– initWithUTF8String:
– initWithFormat:
– initWithFormat:arguments:
– initWithFormat:locale:
– initWithFormat:locale:arguments:
– initWithData:encoding:
+ stringWithFormat:
+ localizedStringWithFormat:
+ stringWithCharacters:length:
+ stringWithString:
+ stringWithCString:encoding:
+ stringWithUTF8String:
+ stringWithCString:
+ stringWithCString:length:
– initWithCString:
– initWithCString:length:
– initWithCStringNoCopy:length:freeWhenDone:

●ファイルからの文字列の生成と初期化

+ stringWithContentsOfFile:encoding:error:
– initWithContentsOfFile:encoding:error:
+ stringWithContentsOfFile:usedEncoding:error:
– initWithContentsOfFile:usedEncoding:error:
+ stringWithContentsOfFile:
– initWithContentsOfFile:

●URLからの文字列の生成と初期化

+ stringWithContentsOfURL:encoding:error:
– initWithContentsOfURL:encoding:error:
+ stringWithContentsOfURL:usedEncoding:error:
– initWithContentsOfURL:usedEncoding:error:
+ stringWithContentsOfURL:
– initWithContentsOfURL:

●ファイルまたはURLへの書き出し

– writeToFile:atomically:encoding:error:
– writeToURL:atomically:encoding:error:
– writeToFile:atomically:
– writeToURL:atomically:

●文字列の長さの取得

– length
– lengthOfBytesUsingEncoding:
– maximumLengthOfBytesUsingEncoding:

●文字とバイトの取得

– characterAtIndex:
– getCharacters:range:
– getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
– getCharacters:

●C文字列の取得

– cStringUsingEncoding:
– getCString:maxLength:encoding:
– UTF8String
– cString
– cStringLength
– getCString:
– getCString:maxLength:
– getCString:maxLength:range:remainingRange:
– lossyCString

●文字列の結合

– stringByAppendingFormat:
– stringByAppendingString:
– stringByPaddingToLength:withString:startingAtIndex:

●文字列の分割

– componentsSeparatedByString:
– componentsSeparatedByCharactersInSet:
– stringByTrimmingCharactersInSet:
– substringFromIndex:
– substringWithRange:
– substringToIndex:

●文字と部分文字列の検索

– rangeOfCharacterFromSet:
– rangeOfCharacterFromSet:options:
– rangeOfCharacterFromSet:options:range:
– rangeOfString:
– rangeOfString:options:
– rangeOfString:options:range:
– rangeOfString:options:range:locale:
– enumerateLinesUsingBlock:
– enumerateSubstringsInRange:options:usingBlock:

●部分文字列の置換

– stringByReplacingOccurrencesOfString:withString:
– stringByReplacingOccurrencesOfString:withString:options:range:
– stringByReplacingCharactersInRange:withString:

●行と段落範囲の判別

– getLineStart:end:contentsEnd:forRange:
– lineRangeForRange:
– getParagraphStart:end:contentsEnd:forRange:
– paragraphRangeForRange:

●合成済文字範囲の判別

– rangeOfComposedCharacterSequenceAtIndex:
– rangeOfComposedCharacterSequencesForRange:

●文字列のコンテンツ情報をプロパティリストへ変換

– propertyList
– propertyListFromStringsFileFormat

●文字列の同定と比較

– caseInsensitiveCompare:
– localizedCaseInsensitiveCompare:
– compare:
– localizedCompare:
– compare:options:
– compare:options:range:
– compare:options:range:locale:
– localizedStandardCompare:
– hasPrefix:
– hasSuffix:
– isEqualToString:
– hash

●文字列の畳み込み

– stringByFoldingWithOptions:locale:

●共有プレフィックスの取得

– commonPrefixWithString:options:

●大文字/小文字の変換

– capitalizedString
– lowercaseString
– uppercaseString

●文字列の正規化

– decomposedStringWithCanonicalMapping
– decomposedStringWithCompatibilityMapping
– precomposedStringWithCanonicalMapping
– precomposedStringWithCompatibilityMapping

●数値の取得

– doubleValue
– floatValue
– intValue
– integerValue
– longLongValue
– boolValue

●エンコーディングの処理

+ availableStringEncodings
+ defaultCStringEncoding
+ localizedNameOfStringEncoding:
– canBeConvertedToEncoding:
– dataUsingEncoding:
– dataUsingEncoding:allowLossyConversion:
– description
– fastestEncoding
– smallestEncoding

●パスの処理

+ pathWithComponents:
– pathComponents
– completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:
– fileSystemRepresentation
– getFileSystemRepresentation:maxLength:
– isAbsolutePath
– lastPathComponent
– pathExtension
– stringByAbbreviatingWithTildeInPath
– stringByAppendingPathComponent:
– stringByAppendingPathExtension:
– stringByDeletingLastPathComponent
– stringByDeletingPathExtension
– stringByExpandingTildeInPath
– stringByResolvingSymlinksInPath
– stringByStandardizingPath
– stringsByAppendingPaths:

●URLの処理

– stringByAddingPercentEscapesUsingEncoding:
– stringByReplacingPercentEscapesUsingEncoding:



●クラスメソッド

availableStringEncodings

+ (const NSStringEncoding *)availableStringEncodings

アプリケーション環境がサポートしているエンコーディングを、0終端の文字列オブジェクトのリストで返します。

一般的によく使われるエンコーディングには次のようなものがあります。

    NSASCIIStringEncoding
    NSUnicodeStringEncoding
    NSISOLatin1StringEncoding
    NSISOLatin2StringEncoding
    NSSymbolStringEncoding

これ以外にCore FoundationのエンコーディングをCFStringConvertEncodingToNSStringEncoding関数で変換して追加する事もできます。


defaultCStringEncoding

+ (NSStringEncoding)defaultCStringEncoding

C文字列のエンコーディングを返します。

このメソッドは、ユーザのデフォルト言語や他の要素によって設定されているエンコーディングを返します。

未知のエンコーディングのユーザ文書を処理する際、他に手掛かりが無い場合に必要となるかもしれません。

ただし、場合によっては予期しないエンコーディングになる可能性もあります。

このメソッドは、stringWithCString:などのC文字列の処理で引数で使います。

C文字列のエンコーディングは、デフォルトではシステムによって決定されており、個々のプログラムで決まるものではありません。


localizedNameOfStringEncoding:

+ (NSString *)localizedNameOfStringEncoding:(NSStringEncoding)encoding

人が読めるエンコーディング名を返します。

各エンコーディングに付与されている番号を、ロケールの言語で表します。

encoding:エンコーディング番号を指定します。


localizedStringWithFormat:

+ (id)localizedStringWithFormat:(NSString *)format ...

デフォルトのロケールで作った引数リストの文字列を返します。
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません。


pathWithComponents:

+ (NSString *)pathWithComponents:(NSArray *)components

指定した配列の中の文字列を、パスの区切り文字『/』を挟んだ文字列にして返します。

最初に『/』が入り、以降『/』で分割していきます。

最後に『/』を含めたい場合は空の要素を入れます。

このメソッドでは完全なパスを作れません。

親ディレクトリなど参照を含めたものにするには、stringByStandardizingPathを使用してください。

components:NSStringオブジェクトの配列を指定します。


string

+ (id)string

空の文字列を返します。


stringWithCharacters:length:

+ (id)stringWithCharacters:(const unichar *)chars length:(NSUInteger)length

UnicodeのC文字列から指定した文字数で作った文字列を返します。

chars:UnicodeのC配列(値がNULLの場合、例外が発生します)。

length:C文字列から使用する文字列の長さ。


stringWithContentsOfFile:encoding:error:

+ (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error

指定したパスにあるファイルを読み込み、エンコードして文字列を作って返します。
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス。

enc:パスの示しているファイルのエンコーディング。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


stringWithContentsOfFile:usedEncoding:error:

+ (id)stringWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したパスにあるファイルを読み込み、エンコードを自動判別して作った文字列を返します。

このメソッドはファイルからエンコーディングを決定しようとします。
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス。

enc:ファイルが正常に読み込まれた場合、エンコーディングを設定します。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


stringWithContentsOfURL:encoding:error:

+ (id)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error

指定したURLをエンコードして作った文字列を返します。
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます。

enc:パスの示しているURLのエンコーディング。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


stringWithContentsOfURL:usedEncoding:error:

+ (id)stringWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したURLを自動判別して作った文字列を返します。

このメソッドはURLからエンコーディングを決定しようとします。
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます。

enc:URLが正常に読み込まれた場合、エンコーディングを設定します。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


stringWithCString:encoding:

+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

C文字列を指定したエンコーディングで作り、返します。
(C文字列がNULL終端でない、または指定したエンコーディングと実際のC文字列のエンコーディングが合っていない場合は結果が未定義になります)

cString:NULL終端のC文字列(途中にNULLが入っていてはいけません)。

enc:C文字列のエンコーディング。


stringWithFormat:

+ (id)stringWithFormat:(NSString *)format,...

指定したフォーマットで作った引数リストの文字列を返します。
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません。


stringWithString:

+ (id)stringWithString:(NSString *)aString

指定した文字列のコピーで作った文字列を返します。

aString:コピー元になるNSStringオブジェクトの文字列。
(aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)


stringWithUTF8String:

+ (id)stringWithUTF8String:(const char *)bytes

UTF8エンコードのC文字列をコピーして作った文字列を返します。

bytes:UTF-8エンコーディングのC文字列。
(NULL終端でない場合は例外が発生します)



●インスタンスメソッド

boolValue

– (BOOL)boolValue

ブール値を返します。

最初の文字が『Y』『y』『T』『t』もしくは1~9の数字の場合にYESを返し、それ以外の文字は無視します。

上記有効な文字以外の場合にはNOを返します。

最初の文字以降と空白、-と+符号はスキップされます。


canBeConvertedToEncoding:

– (BOOL)canBeConvertedToEncoding:(NSStringEncoding)encoding

損失無しでエンコーディングができたかどうかをブール値で返します。

できた場合はYESを、エンコーディングの過程で文字に変更や削除があった場合はNOを返します。

dataUsingEncoding:などで文字列の変換を行い、失敗してnilが返って来る場合は、このメソッドを呼び出してオーバーヘッドを回避する事ができます。

encoding:文字列のエンコーディングを指定します。


capitalizedString

– (NSString *)capitalizedString

単語の最初の文字を大文字に、それ以外は小文字にして返します。

単語と認識するのはスペース、タブ、改行コードで区切られたものです。

ハイフンや句読点など、複数単語で区切られた場合は望む結果が得られない場合があります。

また、結合文字などが含まれる場合、同じ長さになるとは限りません(lowercaseString参照)。


caseInsensitiveCompare:

– (NSComparisonResult)caseInsensitiveCompare:(NSString *)aString

指定した文字列と大文字/小文字の区別無しで比較し、その結果を返します。

compare:options:メソッドをNSCaseInsensitiveSearchオプションで指定した場合と同じになります。

比較対象の文字列をユーザに求める場合はlocalizedCaseInsensitiveCompare:を使用してください。

aString:比較対象となる文字列です。
nilを指定した場合の動作は未定義なので、指定しないでください。


characterAtIndex:

– (unichar)characterAtIndex:(NSUInteger)index

Unicodeの文字配列から指定した数値の位置にある文字を返します。

index:文字配列から何文字目かを指定します。
(文字配列の総文字数内である必要があります)
総文字数を超えたindexを指定した場合、NSRangeExceptionで例外を発生させます。


commonPrefixWithString:options:

– (NSString *)commonPrefixWithString:(NSString *)aString options:(NSStringCompareOptions)mask

レシーバの文字列が指定した文字列で始まるかを比較し一致すればレシーバの共有部分を返します。
(指定文字列から始まる場合のみで、語句中で一致しても空の文字列が返されます)

例えばレシーバを『Ma¨dchen』、aStringを『Mädchenschule』とした場合、『Ma¨dchen』を返します。
(『Mädchen』ではありません)

と、リファレンスにはありますが、これは『aStringではなくレシーバの共有部分を返す』という説明です。

上記説明のまま文字列をコピペして試すと、『Ma¨dchen』の『¨』はU+00A8であり、結合文字用の『̈(U+0308)』とは異なるため、『M』しか返ってきませんので注意してください。

aString:比較する文字列。

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。


compare:

– (NSComparisonResult)compare:(NSString *)aString

指定した文字列を比較し、その結果を返します。

compare:options:range:メソッドをオプション無し、全範囲で指定した場合と同じになります。

比較対象の文字列をユーザに求める場合はlocalizedCompare:、またはlocalizedCaseInsensitiveCompare:を使用してください。

aString:比較対象となる文字列です。
nilを指定した場合の動作は未定義なので、指定しないでください。


compare:options:

– (NSComparisonResult)compare:(NSString *)aString options:(NSStringCompareOptions)mask

指定した文字列を検索オプリョン付きで比較し、その結果を返します。

compare:options:range:メソッドを全範囲で指定した場合と同じになります。

比較対象の文字列をユーザに求める場合はlocalizedCompare:、またはlocalizedCaseInsensitiveCompare:compare:options:range:locale:を使用してください。

aString:比較対象となる文字列です。
nilを指定した場合の動作は未定義なので、指定しないでください。

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSNumericSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。


compare:options:range:

- (NSComparisonResult)compare:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)range

指定した文字列の範囲を検索オプリョン付きで比較し、その結果を返します。

compare:options:range:locale:メソッドのlocaleをnilで指定した場合と同じになります。

ユーザにロケールを求める場合はcompare:options:range:locale:でロケールを(currentLocale[NSLocale])で設定してください。

aString:比較対象となる文字列です。
nilを指定した場合の動作は未定義なので、指定しないでください。

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSNumericSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。

range:比較するレシーバの文字列の範囲を指定します。
この範囲は検索するNSStringオブジェクトより大きく設定してはいけません。
超える範囲を設定した場合、NSRangeExceptionで例外を発生させます。


compare:options:range:locale:

– (NSComparisonResult)compare:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)range locale:(id)locale

指定した文字列の範囲を検索オプリョン付きで語彙を比較し、その結果を返します。

比較対象の文字列をユーザに求める場合はcompare:options:range:locale:で、ロケールをlocale(currentLocale[NSLocale])にして使用してください。

aString:比較対象となる文字列です。
nilを指定した場合の動作は未定義なので、指定しないでください。

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSNumericSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。

range:比較するレシーバの文字列の範囲を指定します。
この範囲は検索するNSStringオブジェクトより大きく設定してはいけません。
超える範囲を設定した場合、NSRangeExceptionで例外を発生させます。

locale:NSLocaleのインスタンスで、nilを指定した場合はインスタンスを生成せずに現在のロケールになります。
ユーザにロケールを求める場合はロケールを(currentLocale[NSLocale])で設定してください。


completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:

– (NSUInteger)completePathIntoString:(NSString **)outputName caseSensitive:(BOOL)flag matchesIntoArray:(NSArray **)outputArray filterTypes:(NSArray *)filterTypes

指定した配列の中で、レシーバのパスと一致するものを検索し、且つファイルパスとして完成しているかどうかをチェックし、適合するパスがあれば最長のものを返します。

一致するものが無ければ0を、一致すれば1を返します。

複数一致する場合は、outputArrayに含まれるその数を返します。

outputArrayがNULLの場合、正の値を返します。

outputName:レシーバと適合する最長パスの名前を指定します。

flag:完了可能と考えられる場合はYESを指定します。

outputArray:一致する全てのファイル名の配列を指定します。

filterTypes:NSStringオブジェクトの配列で、パスとして完了するかを判断する拡張子を指定します。
(区切り文字『/』は含めない)


componentsSeparatedByCharactersInSet:

– (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator

NSStringオブジェクトの文字列を、指定した文字集合で分割した文字配列にして返します。
(componentsSeparatedByString:が単一の文字列で分割するのに対し、複数の文字列を指定できます)

separator:分割に使用する文字集合。
(nilを指定することはできません)


componentsSeparatedByString:

– (NSArray *)componentsSeparatedByString:(NSString *)separator

NSStringオブジェクトの文字列を、指定した文字列で分割した文字配列にして返します。

separator:分割に使用する文字列。


cStringUsingEncoding:

– (const char *)cStringUsingEncoding:(NSStringEncoding)encoding

指定したエンコーディングでC文字列を返します。

エンコーディングの変換で不可逆変換ができなかった場合はNULLを返します。

戻り値であるC文字列は、元になるNSStringオブジェクトの文字列が解放される、あるいは自動解放が行われると消滅しますので、必要な場合はgetCString:maxLength:encoding:を使用してください。

また、canBeConvertedToEncoding:で不可逆変換が可能かをチェックできます。

それができない場合はdataUsingEncoding:allowLossyConversion:を使ってC文字列に変換できますが、その場合NULL終端など情報が欠落するので注意が必要です。

encoding:C文字列のエンコーディング


dataUsingEncoding:

– (NSData *)dataUsingEncoding:(NSStringEncoding)encoding

指定したエンコーディングでエンコードしたNSDataオブジェクトを返します。

dataUsingEncoding:allowLossyConversion:の2番目の引数にNOを指定したものになるので可逆変換になります。

不可逆変換で構わない場合はdataUsingEncoding:allowLossyConversion:を使用してください。

encoding:文字列のエンコーディングを指定します。


dataUsingEncoding:allowLossyConversion:

– (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag

指定したエンコーディングでエンコードしたNSDataオブジェクトを返します。

flagでNOを指定し、アクセントなどの情報に損失があった場合はnilを返します。

flagがYESの場合、変換時にいくつかの情報を失うことがあります。

例えば、NSUnicodeStringEncodingからNSASCIIStringEncodingへ変換する場合、『Á』のアクセントが欠落して『A』になります。

このメソッドは、バイトオーダーを気にせず安全にファイルを書き出す事ができます。

このメソッドで損失無しの変換でプレーンテキストを作り、文字列オブジェクトへの変換や保存をすることを推奨します。

encoding:文字列のエンコーディングを指定します。

flag:YESの場合は文字の削除や変更を許可します。


decomposedStringWithCanonicalMapping

– (NSString *)decomposedStringWithCanonicalMapping

文字列をUnicode正規化形式Dで分解して返します。


decomposedStringWithCompatibilityMapping

– (NSString *)decomposedStringWithCompatibilityMapping

文字列をUnicode正規化形式KDで分解、合成して返します。


description

– (NSString *)description

レシーバを返します。


doubleValue

– (double)doubleValue

倍精度浮動小数点実数を返します。

オーバーフローの場合はHUGE_VALまたは-HUGE_VALを、アンダーフローの場合は0.0を返します。

また、レシーバの値が有効なテキストで始まっていない場合は0.0を返します。

文字列の先頭にある空白はスキップします。

このメソッドはローカライズされていない値を使用します。
(ローカライズされている場合はNSScannerオブジェクトを使います)


fastestEncoding

– (NSStringEncoding)fastestEncoding

情報損失無しで最速なエンコーディングを返します。

このメソッドは空間効率が良くありません。


fileSystemRepresentation

– (const char *)fileSystemRepresentation

ファイルパスとして有効なC文字列を返します。

戻り値のC文字列はレシーバの解放と同時に解放されるので、必要ならばgetFileSystemRepresentation:maxLength:でコピーして格納してください。

レシーバの文字列をファイルパスにエンコーディングできなかった場合は、NSCharacterConversionExceptionを発生させます。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)

戻り値のC文字列をNSStringオブジェクトにするには、stringWithFileSystemRepresentation:length:を使用してください。


floatValue

– (float)floatValue

単精度浮動小数点実数を返します。

オーバーフローの場合はHUGE_VALまたは-HUGE_VALを、アンダーフローの場合は0.0を返します。

また、レシーバの値が有効なテキストで始まっていない場合は0.0を返します。

文字列の先頭にある空白はスキップします。

このメソッドはローカライズされていない値を使用します。
(ローカライズされている場合はNSScannerオブジェクトを使います)


getBytes:maxLength:usedLength:encoding:options:range:remainingRange:

– (BOOL)getBytes:(void *)buffer maxLength:(NSUInteger)maxBuffer usedLength:(NSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)range remainingRange:(NSRangePointer)leftover

指定したバッファに、エンコーディングと範囲を指定したバイト列を書き込みます。
(バイト列にNULL終端は含みません)

書き込みが成功すればYESを、失敗した場合はNOを返します。
(バッファがいっぱいになって失敗する場合もあれば、エンコーディングの変換ができなかった可能性も考えられます)

buffer:バイト列を格納するバッファを指定します。

maxBuffer:バッファの最大バイト数を指定します。

usedBufferCount:使用されたバッファのバイト数を格納します。
(不要の場合はNULLを指定します)

encoding:バイト列のエンコーディングを指定します。

options:バイト列に書き込む際にエンコーディングを変換する必要がある場合に指定します。

range:バイト列に書き込む範囲を指定します。

leftover:指定範囲の内どこまで書き込んだかという結果をポインタで格納します。
(不要の場合はNULLを指定します)


getCharacters:

– (void)getCharacters:(unichar *)buffer

指定したバッファ(メモリ領域)にUnicode文字列を書き込みます。

バッファオーバーランを引き起こす可能性があるため非推奨。
getCharacters:range:の使用を推奨)

buffer:文字列を格納するバッファを指定します。
書き込む文字列を十分に格納できる大きさのバッファが必要です。
([string length] * sizeof(unichar))


getCharacters:range:

– (void)getCharacters:(unichar *)buffer range:(NSRange)aRange

指定したバッファに、範囲内にあるUnicode文字列を書き込みます。

このメソッドではNULL文字を追加しません。

buffer:文字列を格納するバッファを指定します。
書き込む文字列を十分に格納できる大きさのバッファが必要です。
(aRange.length * sizeof(unichar))

aRange:格納する文字列の範囲を指定します。
この範囲は書き込む文字列より大きく設定してはいけません。
超える範囲を設定した場合、NSRangeExceptionで例外を発生させます。


getCString:maxLength:encoding:

– (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding

指定したエンコーディングで変換したC文字列をバッファに格納します。

成功すればYESを、失敗した場合はNOを返します。
(確保したバッファが小さくて失敗する場合もあれば、エンコーディングの変換ができなかった可能性も考えられます)

また、canBeConvertedToEncoding:で不可逆変換が可能かをチェックできます。

それができない場合はdataUsingEncoding:allowLossyConversion:を使ってC文字列に変換できますが、その場合NULL終端など情報が欠落するので注意が必要です。

buffer:C文字列にNULL終端を付加して格納します。

maxBufferCount:NULL終端分を含めたC文字列を格納できるバッファサイズを指定します。

encoding:C文字列のエンコーディング。


getFileSystemRepresentation:maxLength:

– (BOOL)getFileSystemRepresentation:(char *)buffer maxLength:(NSUInteger)maxLength

レシーバにファイルパスとして有効なC文字列があればバッファに格納し、正否を返します。

ファイルパスとして有効なC文字列が得られた場合はYESを返します。

バッファの長さが足りなかったり、ファイルパスとして有効でなかった場合はNOを返します。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)

buffer:有効なファイルパスを、NULL終端のC文字列として格納するバッファを指定します。

length:ファイルパスを格納するバッファの長さを指定します。
NULL終端分を含めた十分な長さを指定してください。


getLineStart:end:contentsEnd:forRange:

– (void)getLineStart:(NSUInteger *)startIndex end:(NSUInteger *)lineEndIndex contentsEnd:(NSUInteger *)contentsEndIndex forRange:(NSRange)aRange

指定した範囲の行の開始位置と終了位置(改行コード含む/含まない)を返します。

改行を判別する記号(改行コード)は次の通りです。
・U+000D:\r または CR(Carriage return:行頭への復帰。行送りは含まない)
・U+2028:Unicode line separator(行区切り記号)
・U+000A:\n または LF(Line Feed:行送り。行頭への復帰は含まない)
・U+2029:Unicode paragraph separator(段落区切り記号)
・またはCRLF

startIndex:指定した範囲にある行の先頭文字位置を返します。
必要が無い場合はNULLを指定します。

lineEndIndex:指定した範囲にある行の改行コード含む終端文字位置を返します。
必要が無い場合はNULLを指定します。

contentsEndIndex:指定した範囲にある行の改行コード含まない終端文字位置を返します。
必要が無い場合はNULLを指定します。

aRange:検索する行のある範囲を指定します。
この範囲は検索するNSStringオブジェクトより大きく設定してはいけません。
超える範囲を設定した場合、NSRangeExceptionで例外を発生させます。


getParagraphStart:end:contentsEnd:forRange:

– (void)getParagraphStart:(NSUInteger *)startIndex end:(NSUInteger *)endIndex contentsEnd:(NSUInteger *)contentsEndIndex forRange:(NSRange)aRange

指定した範囲の段落の開始位置と終了位置(改行コード含む/含まない)を返します。

段落を判別する記号(改行コード)は次の通りです。
・U+000D:\rまたは CR(Carriage return:行頭への復帰。行送りは含まない)
・U+000A:\nまたは LF(Line Feed:行送り。行頭への復帰は含まない)
・U+2029:Unicode paragraph separator(段落区切り記号)
・またはCRLF

getLineStart:end:contentsEnd:forRange:との違いはUnicode line separator(行区切り記号:U+2028)を判別するかどうかです。

getLine~ではUnicode line separatorにも反応し行末と判断しますが、getParagraph~は段落末と判断せずスルーします。
(getLine~はUnicode paragraph separatorも行末と判断します)

逆に言えば、本来段落末(Unicode paragraph separator)だけに反応してほしいgetLine~が、改行コードである 、\rや\nにも反応してしまいますので注意が必要です。

startIndex:指定した範囲にある段落の先頭文字位置を返します。
必要が無い場合はNULLを指定します。

lineEndIndex:指定した範囲にある段落の改行コード含む終端文字位置を返します。
必要が無い場合はNULLを指定します。

contentsEndIndex:指定した範囲にある段落の改行コード含まない終端文字位置を返します。
必要が無い場合はNULLを指定します。

aRange:検索する段落のある範囲を指定します。
この範囲は検索するNSStringオブジェクトより大きく設定してはいけません。
超える範囲を設定した場合、NSRangeExceptionで例外を発生させます。


hash

– (NSUInteger)hash

ハッシュテーブルのアドレスとして使える符号無し整数を返します。

isEqualToString:メソッドで厳密に一致する文字列同士の場合は、同じハッシュ値になります。

サブクラスでオーバーライドしてはいけません。


hasPrefix:

– (BOOL)hasPrefix:(NSString *)aString

指定した文字列がレシーバの先頭側からの文字と一致するか比較します。

一致する場合はYESを返し、不一致あるいはaStringが空の場合はNOを返します。

aString:比較する文字列。


hasSuffix:

– (BOOL)hasSuffix:(NSString *)aString

指定した文字列がレシーバの終端側からの文字と一致するか比較します。

一致する場合はYESを返し、不一致あるいはaStringが空の場合はNOを返します。

aString:比較する文字列。


init

- (id)init

初期化した空のNSStringオブジェクトを返します。


initWithBytes:length:encoding:

- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding

指定した長さとエンコーディングで初期化したバイト列をNSStringオブジェクトとして返します。

bytes:文字列化するバイト列。

length:バイト列の長さ。

encoding:文字コードのエンコーディング。


initWithBytesNoCopy:length:encoding:freeWhenDone:

- (id)initWithBytesNoCopy:(void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
 
freeWhenDone:(BOOL)flag

指定した長さとエンコーディングで初期化したバイト列をNSStringオブジェクトとして返します。

またNSStringオブジェクト解放時に元のバイト列を解放するか選択できます。

bytes:文字列化するバイト列。

length:バイト列の長さ。

encoding:文字コードのエンコーディング。

flag:YESの場合、NSStringオブジェクト解放時にバイト列を解放し、NOなら保持します。


initWithCharacters:length:

– (id)initWithCharacters:(const unichar *)characters length:(NSUInteger)length

UnicodeのC配列から指定した文字数で初期化したNSStringオブジェクトを返します。

characters:UnicodeのC配列(値がNULLの場合、例外が発生します)。

length:C配列の長さ。


initWithCharactersNoCopy:length:freeWhenDone:

– (id)initWithCharactersNoCopy:(unichar *)characters length:(NSUInteger)length
 
freeWhenDone:(BOOL)flag

UnicodeのC文字列から指定した文字数で初期化したNSStringオブジェクトを返します。

またNSStringオブジェクト解放時に元のバイト列を解放するか選択できます。

characters:UnicodeのC配列(値がNULLの場合、例外が発生します)。

length:C配列の長さ。

flag:YESの場合、NSStringオブジェクト解放時にバイト列を解放し、NOなら保持します。


initWithContentsOfFile:encoding:error:

– (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error

指定したパスのファイルを読み込み、エンコードして初期化したNSStringオブジェクトを返します。
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス。

enc:パスの示しているファイルのエンコーディング。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


initWithContentsOfFile:usedEncoding:error:

– (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したパスにあるファイルを読み込み、エンコードを自動判別して初期化したNSStringオブジェクトを返します。
(ファイルが開けなかったりエンコーディングでエラーになった場合はnilを返します)

path:ファイルの場所を示すパス。

enc:ファイルが正常に読み込まれた場合、エンコーディングを設定します。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


initWithContentsOfURL:encoding:error:

– (id)initWithContentsOfURL:(NSURL *)url encoding:(MSStringEncoding)enc error:(NSError **)error

指定したURLをエンコードして初期化したNSStringオブジェクトを返します。
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます。

enc:パスの示しているURLのエンコーディング。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


initWithContentsOfURL:usedEncoding:error:

– (id)initWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

指定したURLを自動判別して初期化したNSStringオブジェクトを返します。

このメソッドはURLからエンコーディングを決定しようとします。
(URLが開けなかったりエンコーディングでエラーになった場合はnilを返します)

url:URLを読み込みます。

enc:URLが正常に読み込まれた場合、エンコーディングを設定します。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


initWithCString:encoding:

– (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding

NULLで終わるC文字配列を指定したエンコードで初期化したNSStringオブジェクトを返します。
(C文字配列がNULL終端でない場合またはエンコーディングが適切でない場合は未定義になります)

nullTerminatedCString:NULL終端のC文字配列。

encoding:C文字配列のエンコーディング。


initWithData:encoding:

– (id)initWithData:(NSData *)data encoding:(NSStringEncoding)encoding

指定したエンコードで変換したデータで初期化したNSStringオブジェクトを返します。

data:バイト列のNSDataオブジェクト。

encoding:C文字配列のエンコーディング。


initWithFormat:

– (id)initWithFormat:(NSString *)format ...

指定したフォーマット(書式)で初期化したNSStringオブジェクトを返します。
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません。

...:カンマ区切りで値を指定します。


initWithFormat:arguments:

– (id)initWithFormat:(NSString *)format arguments:(va_list)argList

指定したフォーマットと可変引数リストで初期化したNSStringオブジェクトを返します。
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません。

argList:可変引数リスト。


initWithFormat:locale:

– (id)initWithFormat:(NSString)format locale:(id)locale ...

指定したフォーマットとロケールで初期化したNSStringオブジェクトを返します。
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません。

locale:NSDictionaryかNSLocaleのインスタンスで指定し、nilの場合標準のロケールになります。
ロケールの指定にdictionaryで環境設定から標準(デフォルト)のロケールを設定する場合は、[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]を使います。


initWithFormat:locale:arguments:

– (id)initWithFormat:(NSString *)format locale:(id)locale arguments:(va_list)argList

指定したフォーマットとロケール、可変引数リストで初期化したNSStringオブジェクトを返します。
formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:文字列の書式を指定します。nilを指定することはできません。

locale:NSDictionaryかNSLocaleのインスタンスで指定し、nilの場合標準のロケールになります。
ロケールの指定にdictionaryで環境設定から標準(デフォルト)のロケールを設定する場合は、[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]を使います。

argList:可変引数リスト。


initWithString:

– (id)initWithString:(NSString *)aString

指定した文字列のコピーで初期化したNSStringオブジェクトを返します。

aString:初期化に用いる文字列。


initWithUTF8String:

– (id)initWithUTF8String:(const)bytes

NULLで終わるUTF-8エンコーディングのC文字列のコピーで初期化したNSStringオブジェクトを返します。
(NULL終端でない場合は例外が発生します)

bytes:UTF-8エンコーディングのNULL終端C文字列。


integerValue

– (NSInteger)integerValue

NSInteger型の整数を返します。

int型は32bit固定ですがNSInteger型は32bit環境なら32bit int型、64bit環境なら64bitのlong型になります。

文字列の先頭にある空白はスキップします。

また、レシーバの値が有効な10進数表記のテキストで始まっていない場合は0を返します。

このメソッドはローカライズされていない値を使用します。
(ローカライズされている場合はNSScannerオブジェクトを使います)


intValue

– (int)intValue

整数を10進数で返します。

文字列の先頭にある空白はスキップします。

オーバーフローした場合にはINT_MAXまたはINT_MINを返します。

また、レシーバの値が有効な10進数表記のテキストで始まっていない場合は0を返します。

このメソッドはローカライズされていない値を使用します。
(ローカライズされている場合はNSScannerオブジェクトを使います)


isAbsolutePath

– (BOOL)isAbsolutePath

絶対パスかどうかをBOOL値で返します。

絶対パスならYESを、相対パスならNOを返します。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)

このパスにファイルが存在しているかどうかはチェックされません。
fileExistsAtPath:または類似のNSFileManagerのメソッドを使用してください)


isEqualToString:

– (BOOL)isEqualToString:(NSString *)aString

指定した文字列がレシーバの文字列とUnicodeベースで一致するか比較します。

id、またはNSOrderedSameが完全に一致する場合はYESを返し、不一致の場合はNOを返します。
(正規表現での厳密な比較になるため、『O』などの合成済文字は区別されます)

比較する双方が文字列の場合、isEqualメソッドよりも高速です。

aString:比較する文字列。


lastPathComponent

– (NSString *)lastPathComponent

パスの最後の要素を返します。

戻り値の例を下表に示します。

レシーバの文字列戻り値の文字列
"/tmp/scratch.tiff""scratch.tiff"
"/tmp/scratch""scratch"
"/tmp/""tmp"
"scratch""scratch"
"/""/"

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


length

– (NSUInteger)length

Unicode文字列の文字数を返します。


lengthOfBytesUsingEncoding:

– (NSUInteger)lengthOfBytesUsingEncoding:(NSStringEncoding)enc

指定したエンコーディングに変換した場合に、必要な文字列のバイト数を返します。

戻り値のバイト数にはエンコーディング情報も含みます。
(NULL終端のバイト数は含みません)

指定したエンコーディングで変換できない、または変換した文字列をメモリに格納できなかった(NSIntegerMaxを超える長さ)場合は0を返します。

enc:NSStringオブジェクトの長さを求めるエンコーディング。


lineRangeForRange:

– (NSRange)lineRangeForRange:(NSRange)aRange

指定した範囲にある行の全体範囲を返します。
(改行コードも含みます)

aRange:検索する行のある範囲を指定します。


localizedCaseInsensitiveCompare:

– (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)aString

指定した文字列を大文字/小文字の区別無くローカライズした語彙を比較し、その結果を返します。

aString:比較対象となる文字列です。
nilを指定した場合の動作は未定義なので、指定しないでください。


localizedCompare:

– (NSComparisonResult)localizedCompare:(NSString *)aString

指定した文字列をローカライズした語彙で比較し、その結果を返します。

aString:比較対象となる文字列です。
nilを指定した場合の動作は未定義なので、指定しないでください。


longLongValue

– (long long)longLongValue

long long型の整数を10進数で返します。

文字列の先頭にある空白はスキップします。

オーバーフローした場合にはLLONG_MAXまたはLLONG_MINを返します。

また、レシーバの値が有効な10進数表記のテキストで始まっていない場合は0を返します。

このメソッドはローカライズされていない値を使用します。
(ローカライズされている場合はNSScannerオブジェクトを使います)


lowercaseString

– (NSString *)lowercaseString

単語を小文字にして返します

また、結合文字などが含まれる場合、同じ長さになるとは限りません。

例えばドイツ語で『SS』を意味する『ß』場合、uppercaseStringでは『SS』に変換されますが、lowercaseStringでは変換されません。


maximumLengthOfBytesUsingEncoding:

– (NSUInteger)maximumLengthOfBytesUsingEncoding:(NSStringEncoding)enc

指定したエンコーディングに変換した場合に、必要な文字列の最大バイト数を返します。

戻り値のバイト数にはエンコーディング情報も含みます。
(NULL終端のバイト数は含みません)

指定したエンコーディングで変換できない、または変換した文字列をメモリに格納できなかった(NSIntegerMaxを超える長さ)場合は0を返します。

enc:NSStringオブジェクトの長さを求めるエンコーディング。


paragraphRangeForRange:

– (NSRange)paragraphRangeForRange:(NSRange)aRange

指定した範囲にある段落の全体範囲を返します。
(Unicode paragraph separatorも含みます)

aRange:検索する行のある範囲を指定します。


pathComponents

– (NSArray *)pathComponents

パス区切り文字『/』で区切られた要素を含むNSStringオブジェクトから配列を作ります。

文字列の最初か最後が『/』になっている場合は、『/』が要素に含まれます。

『/』が連続した場合は空の要素と見なして削除されます。

『/』が無い場合はその文字列のみが要素の配列になります。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


pathExtension

– (NSString *)pathExtension

ファイルパスの拡張子を返します。

戻り値の例を下表に示します。

レシーバの文字列戻り値の文字列
"/tmp/scratch.tiff""tiff"
"/tmp/scratch"""(空の文字列)
"/tmp/"""(空の文字列)
"/tmp/scratch..tiff""tiff"

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


precomposedStringWithCanonicalMapping

– (NSString *)precomposedStringWithCanonicalMapping

文字列をUnicode正規化形式Cで分解して返します。


precomposedStringWithCompatibilityMapping

– (NSString *)precomposedStringWithCompatibilityMapping

文字列をUnicode正規化形式KCで分解、合成して返します。


rangeOfCharacterFromSet:

– (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet

指定した文字集合を検索し、最初に見つけた文字集合の範囲を返します。

指定した文字集合が見つけられなかった場合、{NSNotFound, 0}を返します。

aSet:検索する文字集合。
(nilを指定することはできません。aSetがnilの場合、NSInvalidArgumentExceptionを呼び出します)


rangeOfCharacterFromSet:options:

– (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet options:(NSStringCompareOptions)mask

指定した文字集合をオプション付き検索し、最初に見つけた文字集合の範囲を返します。

指定した文字集合が見つけられなかった場合、{NSNotFound, 0}を返します。

aSet:検索する文字集合(nilを指定することはできません。aSetがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSBackwardsSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。


rangeOfCharacterFromSet:options:range:

– (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet options:(NSStringCompareOptions)mask range:(NSRange)aRange

指定した文字集合を範囲とオプション付き検索し、最初に見つけた文字集合の範囲を返します。

指定した文字集合が見つけられなかった場合、{NSNotFound, 0}を返します。

結合文字などで1文字を検索した結果が1文字以上になる場合があります。
(例:文字集合『stru¨del』から『ü』を検索した場合、結果範囲が{3,2}になります)

:検索する文字集合。
(nilを指定することはできません。aSetがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSBackwardsSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。

aRange:検索範囲を指定します。
元の文字列の範囲を超えてはいけません。
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)


rangeOfComposedCharacterSequenceAtIndex:

– (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)anIndex

指定した位置の文字範囲を判別して返します。

Unicodeでは結合文字という、濁点や半濁点などを前の文字と合成して1文字として表示するものがあります。

このように結合文字の場合、表示上1文字でもコード上では複数文字で構成されている場合が有るため、その検出に使えます。

anIndex:文字範囲を判別する文字位置を指定します。


rangeOfComposedCharacterSequencesForRange:

– (NSRange)rangeOfComposedCharacterSequencesForRange:(NSRange)range

指定した範囲の文字範囲を判別して返します。

Unicodeでは結合文字という、濁点や半濁点などを前の文字と合成して1文字として表示するものがあります。

このように結合文字の場合、表示上1文字でもコード上では複数文字で構成されている場合が有るため、その検出に使えます。

range:文字範囲を判別する範囲を指定します。
この範囲は検索するNSStringオブジェクトより大きく設定してはいけません。


rangeOfString:

– (NSRange)rangeOfString:(NSString *)aString

指定した文字列を検索し、最初に見つけた文字列の範囲を返します。

指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します。

aString:検索する文字列。(nilを指定することはできません。aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)


rangeOfString:options:

– (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask

指定した文字列をオプション付きで検索し、最初に見つけた文字列の範囲を返します。

指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します。

aString:検索する文字列。
(nilを指定することはできません。aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSBackwardsSearchNSAnchoredSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。


rangeOfString:options:range:

– (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)aRange

指定した文字列を範囲とオプション付きで検索し、最初に見つけた文字列の範囲を返します。

指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します。

aString:検索する文字列。
(nilを指定することはできません。aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSBackwardsSearchNSAnchoredSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。

aRange:検索範囲を指定します。
元の文字列の範囲を超えてはいけません。
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)


rangeOfString:options:range:locale:

– (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange locale:(NSLocale *)locale

指定した文字列を範囲とオプション付きで検索し、最初に見つけた文字列の範囲を返します。

指定した文字列が見つけられない、もしくは空の文字列(@"")を指定した場合は{NSNotFound, 0}を返します。

aString:検索する文字列。
(nilを指定することはできません。aStringがnilの場合、NSInvalidArgumentExceptionを呼び出します)

mask:検索オプション(NSCaseInsensitiveSearchNSLiteralSearchNSBackwardsSearchNSAnchoredSearch)を指定します。
or演算子『|』で複数オプションを指定可能です。

aRange:検索範囲を指定します。
元の文字列の範囲を超えてはいけません。
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)

locale:検索文字列と比較するロケールを指定します(nilの場合、現在のロケールになります)
このlocaleでアルゴリズムのチェックをすることもできます。
(例:トルコ語環境で大文字/小文字を区別しない条件の場合、『I』(U+0049:Latin Captal Letter I)は『i』(U+0069:Latin Small Letter I)だけでなく『ı』(U+0131:Latin Small Dotkess I)とも同一とみなされます)


smallestEncoding

– (NSStringEncoding)smallestEncoding

情報損失無しで最小なエンコーディングを返します。

このメソッドは実行に時間がかかる場合が有り、速くはありませんが空間効率は良いです。


stringByAbbreviatingWithTildeInPath

– (NSString *)stringByAbbreviatingWithTildeInPath

現在のユーザのホームディレクトリへのフルパスの代わりに、チルダ(~)を用いた相対パスを新規の文字列として返します。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


stringByAddingPercentEscapesUsingEncoding:

– (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

指定したエンコーディングを使ってURLを変換し、URLエンコーディング文字列を返します。

変換に失敗した場合はnilを返します。

変換に関する詳細は、CFURLCreateStringByAddingPercentEscapesを参照してください。

encoding:エンコーディングを指定します


stringByAppendingFormat:

– (NSString *)stringByAppendingFormat:(NSString *)format ...

指定したフォーマットで文字列を追加して返します。
(formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

format:フォーマット(書式)。
(nilを指定することはできません)

...:カンマ区切りで値を指定します。


stringByAppendingPathComponent:

– (NSString *)stringByAppendingPathComponent:(NSString *)aString

レシーバの文字列に指定した文字列を追加した新規の文字列を返します。

パスの区切り文字『/』は必要に応じて付与します。

aString:パスに追加する文字列を指定します。

aStringを"scratch.tiff"にした場合の、戻り値の例を下表に示します。

レシーバの文字列戻り値の文字列
"/tmp""/tmp/scratch.tiff"
"/tmp/""/tmp/scratch.tiff"
"/""/scratch.tiff"
""(空の文字列)"scratch.tiff"

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


stringByAppendingPathExtension:

– (NSString *)stringByAppendingPathExtension:(NSString *)ext

レシーバの文字列に指定した文字列を拡張子として追加し、新規の文字列を返します。

ext:追加する拡張子を指定します。

パスの区切り文字『/』は必要に応じて付与します。

extを"tiff"にした場合の、戻り値の例を下表に示します。

レシーバの文字列戻り値の文字列
"/tmp/scratch.old""/tmp/scratch.old.tiff"
"/tmp/scratch.""/tmp/scratch..tiff"
"/tmp/""/tmp.tiff"
"scratch""scratch.tiff"

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


stringByAppendingString:

– (NSString *)stringByAppendingString:(NSString *)aString

指定した文字列を追加した新規の文字列を返します。
(formatがnilの場合、NSInvalidArgumentExceptionを呼び出します)

aString:NSStringオブジェクトに追加する文字列です。
(nilを指定することはできません)


stringByDeletingLastPathComponent

– (NSString *)stringByDeletingLastPathComponent

パスの最後の要素をパスの区切り文字『/』と共に削除し、新規の文字列を返します。

ルートパスの場合は変更しません。

戻り値の例を下表に示します。

レシーバの文字列戻り値の文字列
"/tmp/scratch.tiff""/tmp"
"/tmp/lock/""/tmp"
"/tmp/""/"
"/tmp""/"
"/""/"
"scratch.tiff"""(空の文字列)

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


stringByDeletingPathExtension

– (NSString *)stringByDeletingPathExtension

拡張子を削除し、新規の文字列を返します。

最後がパスの区切り文字『/』の場合は『/』を削除します。

ルートパスの場合は変更しません。

戻り値の例を下表に示します。

レシーバの文字列戻り値の文字列
"/tmp/scratch.tiff""/tmp/scratch"
"/tmp/""/tmp"
"scratch.bundle/""scratch"
"scratch..tiff""scratch."
".tiff"".tiff"
"/""/"

レシーバが拡張子のみの場合、削除されないので注意してください。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


stringByExpandingTildeInPath

– (NSString *)stringByExpandingTildeInPath

チルダ『~』または『~user』の相対パスを絶対パスに展開し、新規文字列を返します。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)


stringByFoldingWithOptions:locale:

– (NSString *)stringByFoldingWithOptions:(NSStringCompareOptions)options locale:(NSLocale *)locale

文字列を指定したロケールで畳み込んで返します。

畳み込みを行う事で、大文字と小文字を入れ替えることができます。

options:大文字/小文字の比較オプションを指定します。

locale:畳み込みの方式についてのロケールを指定します。
例えばロケールがトルコ語で大文字/小文字を区別しない場合、『I(U+0049、Latin Capital Letter I)』と『ı(U+0131、Latin Small Letter Dotless I)』は一致しますが、『i(Latin Small Letter I)』とは異なります。


stringByPaddingToLength:withString:startingAtIndex:

– (NSString *)stringByPaddingToLength:(NSUInteger)newLength withString:(NSString *)padString startingAtIndex:(NSUInteger)padIndex

NSStringオブジェクトを指定した範囲の長さにし、余った文字は取り除き、足りない分は穴埋めして文字列を返します。

newLength:NSStringオブジェクトの新たな長さを指定します。

padString:穴埋めする文字列を指定します。

padIndex:穴埋めする文字列の開始位置を指定します。


stringByReplacingCharactersInRange:withString:

– (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement

指定した範囲で文字列中の文字を置換して、新しい文字列を作ります。

range:置換対象の検索範囲を指定します。

replacement:置換する文字列を指定します。


stringByReplacingOccurrencesOfString:withString:

– (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

targetの文字列をreplacementの文字列に全て置換し、新しい文字列を作ります。

target:置換対象になる文字列を指定します。

replacement:置換する文字列を指定します。


stringByReplacingOccurrencesOfString:withString:options:range:

– (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange

指定した範囲とオプションで、targetの文字列をreplacementの文字列に全て置換し、新しい文字列を作ります。

target:置換対象になる文字列を指定します。

replacement:置換する文字列を指定します。

options:置換対象の検索オプションを指定します。
(『0』を指定するとオプション無しになります)

searchRange:置換対象の検索範囲を指定します。


stringByReplacingPercentEscapesUsingEncoding:

– (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

指定したエンコーディングを使ってURLエンコーディング文字列を変換し、URLを返します。

変換に失敗した場合はnilを返します。

より複雑な設定をする場合は、CFURLCreateStringByReplacingPercentEscapesを使います。

encoding:エンコーディングを指定します。


stringByResolvingSymlinksInPath

– (NSString *)stringByResolvingSymlinksInPath

シンボリックリンク(MacOSのエイリアスやWindowsのショートカットに相当する参照情報で、実体へのファイルパスを示す)を標準パスに変換し、新規文字列を返します。

エラーが発生した場合はselfを返します。

レシーバのパス名が『/private』で始まる場合は、そのまま返します。


stringByStandardizingPath

– (NSString *)stringByStandardizingPath

無関係なパスの要素を除外して、新しい文字列を返します。

シンボリックリンクを検出した場合は、stringByResolvingSymlinksInPathを呼び出します。

無効なパス名の場合は、stringByResolvingSymlinksInPathを試しますが、結果が不明瞭になります。

パス要素が無い場合は、selfを返します。

戻り値の中にシンボリックリンクが残っている場合があります。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)

このメソッドは文字列に以下の変更を加えられます。

・チルダで始まる場合、stringByExpandingTildeInPathで展開します。

・空の要素と現在のディレクトリ(『//』と『/./』)は削除され、一つのパス区切り文字『/』になります。

・絶対パスの場合、stringByResolvingSymlinksInPathを使って親ディレクトリを参照し、シンボリックリンクがないか確認・解消します。

・相対パスの場合、シンボリックリンクが解決できないため、親ディレクトリが残ります。

・『/private』で始まる場合は、そのまま返します。
(そのパスにファイルが存在しているかどうかはチェックされません)


stringByTrimmingCharactersInSet:

– (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set

NSStringオブジェクトの文字列の両端から、指定した文字集合を取り除いた文字列を返します。

元の文字列が除外する文字集合のみで構成されていた場合、空の文字列を返します。

set:除外する文字集合。
(nilを指定することはできません)
文字集合にはwhitespaceCharacterSet(空白とタブ)やwhitespaceAndNewlineCharacterSet(空白とタブ、改行文字)などの標準文字集合の他、componentsSeparatedByCharactersInSet:でカスタマイズも指定できます。


stringsByAppendingPaths:

– (NSArray *)stringsByAppendingPaths:(NSArray *)paths

レシーバの文字配列に、指定した文字配列とパス区切り文字『/』を追加して返します。

このメソッドはファイルパスに対してのみ使用してください。
(URLなどで使わないこと)

paths
:追加するパスの文字配列を指定します。


substringFromIndex:

– (NSString *)substringFromIndex:(NSUInteger)anIndex

先頭から指定した文字位置までを削除した部分文字列を、新規の文字列で返します。

anIndex:文字列の中から切り取る部分までの文字位置を指定します。
文字列の長さを超える文字位置を指定した場合、NSRangeExceptionで例外を発生させます。
文字列の長さと同じ文字位置を指定した場合は、空の文字列を返します。


substringToIndex:

– (NSString *)substringToIndex:(NSUInteger)anIndex

先頭から指定した文字までの部分文字列を、新規の文字列で返します。

anIndex:文字列の中から切り取る部分までの文字位置を指定します。
文字列と同じ長さまで指定可能です。
文字列の長さを超える文字位置を指定した場合、NSRangeExceptionで例外を発生させます。


substringWithRange:

– (NSString *)substringWithRange:(NSRange)aRange

指定した範囲の部分文字列を返します。

aRange:切り取る範囲を指定します。
元の文字列の範囲を超えてはいけません。
(文字列を超える範囲を指定した場合、NSRangeExceptionで例外を発生させます)


uppercaseString

– (NSString *)uppercaseString

単語を大文字にして返します。

また、結合文字などが含まれる場合、同じ長さになるとは限りません(lowercaseString参照)。


UTF8String

– (const char *)UTF8String

NULL終端のUTF8エンコーディングのC文字列を返します。

戻り値であるC文字列は、元になるNSStringオブジェクトの文字列が解放される、あるいは自動解放が行われると消滅しますので、必要な場合はコピーを取って下さい。


writeToFile:atomically:encoding:error:

– (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error

指定したエンコードでパスのファイルに書き出します。
(書き出しが正常終了するとYES、異常終了した場合はNOを返します)

path:NSStringオブジェクトを書き出すファイルのパスを指定します。
(パスの中にチルダ『~』が含まれている場合、このメソッドを呼び出す前にstringByExpandingTildeInPathで変換をかける必要があります)

useAuxiliaryFileYESの場合、一度予備ファイルに書き出してから、本来指定したパスのファイルに書き換えます。
そのため、書き出し途中にクラッシュしても元のパスのファイル内容は保証されます。
NOの場合、直接指定したパスのファイルに書き出します。

enc:パスの示しているファイルのエンコーディング。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)


writeToURL:atomically:encoding:error:

– (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error

指定したエンコードでパスのURLに書き出します。

url:NSStringオブジェクトを書き出すURLを指定します。

useAuxiliaryFileYESの場合、一度予備ファイルに書き出してから本来指定したURLに書き換えます。
そのため、書き出し途中にクラッシュしても元のパスのファイル内容は保証されます。
NOの場合、直接指定したパスのファイルに書き出します。

enc:パスの示しているURLのエンコーディング。

error:エラーが発生した場合、エラー内容をNSErrorオブジェクトで返します。
(エラー内容が不要な場合はNULLを指定します)



●定数

検索と比較オプション

enum {
    NSCaseInsensitiveSearch = 1,
    NSLiteralSearch = 2,
    NSBackwardsSearch = 4,
    NSAnchoredSearch = 8,
    NSNumericSearch = 64,
    NSDiacriticInsensitiveSearch = 128,
    NSWidthInsensitiveSearch = 256,
    NSForcedOrderingSearch = 512,
    NSRegularExpressionSearch = 1024
};

これらの値は、文字列クラスの検索と比較メソッドの多くで使用できるオプションを表します。

これらのオプションの効果についての詳細は『Searching, Comparing, and Sorting Strings』を参照してください。

NSCaseInsensitiveSearch
大文字と小文字を区別しないで検索します。

NSLiteralSearch
文字が完全に一致する検索をします。

NSBackwardsSearch
文字列を文末から検索します。

NSAnchoredSearch
文字列を最初から(NSBackwardsSearchの場合は最後から)検索します。

NSNumericSearch
文字列の数字を数値として比較します。
(例:Foo2.txt < Foo7.txt < Foo25.txt)
このオプションは比較メソッドのみで、検索では使用できません。

NSDiacriticInsensitiveSearch
区別的発音符を無視して検索します。
(例:『o』と『o』は同じものと見なします)

NSWidthInsensitiveSearch
東アジアの文字セットに見られる、全角と半角で異なる幅を持つ文字を無視して検索します。
(例:このオプションでは全角のラテン小文字『a』(Unicode code point U+FF41)と基本的なラテン小文字『a』(Unicode code point U+0061)は同じものと見なします)

NSForcedOrderingSearch
同じ文字列ですが厳密には異なるものを比較し、NSOrderedAscendingまたはNSOrderedDescendingを返します。
このオプションは並べ替えの時に安定性を生みます。
(例:NSCaseInsensitiveSearchを指定した場合、『aaa』は『AAA』より大きくなります)

NSRegularExpressionSearch
文字列をICU互換の正規表現として扱って検索します。
設定する場合NSCaseInsensitiveSearchNSAnchoredSearch以外の他のプションは適用できません。
このオプションはrangeOfString:...メソッドでのみ使用することができます。


文字列エンコーディング

以下の定数はNSStringによって提供され、文字列のエンコーディングとして有効です。

enum {
    NSASCIIStringEncoding = 1,
    NSNEXTSTEPStringEncoding = 2,
    NSJapaneseEUCStringEncoding = 3,
    NSUTF8StringEncoding = 4,
    NSISOLatin1StringEncoding = 5,
    NSSymbolStringEncoding = 6,
    NSNonLossyASCIIStringEncoding = 7,
    NSShiftJISStringEncoding = 8,
    NSISOLatin2StringEncoding = 9,
    NSUnicodeStringEncoding = 10,
    NSWindowsCP1251StringEncoding = 11,
    NSWindowsCP1252StringEncoding = 12,
    NSWindowsCP1253StringEncoding = 13,
    NSWindowsCP1254StringEncoding = 14,
    NSWindowsCP1250StringEncoding = 15,
    NSISO2022JPStringEncoding = 21,
    NSMacOSRomanStringEncoding = 30,
    NSUTF16StringEncoding = NSUnicodeStringEncoding,
    NSUTF16BigEndianStringEncoding = 0x90000100,
    NSUTF16LittleEndianStringEncoding = 0x94000100,
    NSUTF32StringEncoding = 0x8c000100,
    NSUTF32BigEndianStringEncoding = 0x98000100,
    NSUTF32LittleEndianStringEncoding = 0x9c000100,
    NSProprietaryStringEncoding = 65536
};

NSASCIIStringEncoding
8ビット文字の内、厳密な7ビットのASCIIエンコーディング。(ASCII値0~127のみ)

NSNEXTSTEPStringEncoding
NEXTSTEP拡張8ビットASCIIエンコーディング。

NSJapaneseEUCStringEncoding
日本語テキスト用8ビットEUCエンコーディング。

NSUTF8StringEncoding
ASCIIベースのシステムによる、送信または格納に適したUnicode文字の8ビット表現。

NSISOLatin1StringEncoding
8ビットISO Latin 1エンコーディング。

NSSymbolStringEncoding
8ビットAdobe Symbolエンコーディングベクター。

NSNonLossyASCIIStringEncoding
全てのUnicode文字を表現する7ビット冗長ASCII。

NSShiftJISStringEncoding
日本語テキスト用8ビットShift-JISエンコーディング。

NSISOLatin2StringEncoding
8ビットISO Latin 2エンコーディング。

NSUnicodeStringEncoding
文字列オブジェクト用の標準的なUnicodeエンコーディング。

NSWindowsCP1251StringEncoding
Microsoft Windows codepage 1251。キリル文字のエンコーディング。
AdobeStandardCyrillicフォントエンコーディングに相当します。

NSWindowsCP1252StringEncoding
Microsoft Windows codepage 1252。WinLatin1に相当します。

NSWindowsCP1253StringEncoding
Microsoft Windows codepage 1253。ギリシャ文字のエンコーディング。

NSWindowsCP1254StringEncoding
Microsoft Windows codepage 1254。トルコ文字のエンコーディング。

NSWindowsCP1250StringEncoding
Microsoft Windows codepage 1250。WinLatin2に相当します。

NSISO2022JPStringEncoding
email用ISO 2022日本語エンコーディング。

NSMacOSRomanStringEncoding
Classic MacintoshのRomanエンコーディング。

NSUTF16StringEncoding
NSUnicodeStringEncodingの別名。

NSUTF16BigEndianStringEncoding
ビッグエンディアンを指定されたNSUTF16StringEncodingエンコーディング。

NSUTF16LittleEndianStringEncoding
リトルエンディアンを指定されたNSUTF16StringEncodingエンコーディング。

NSUTF32StringEncoding
32ビットUTFエンコーディング。

NSUTF32BigEndianStringEncoding
ビッグエンディアンを指定されたNSUTF32StringEncodingエンコーディング。

NSUTF32LittleEndianStringEncoding
リトルエンディアンを指定されたNSUTF32StringEncodingエンコーディング。

NSProprietaryStringEncoding
インストール固有のエンコーディング、
非推奨。このエンコーディングは推奨されず、代替はありません。)
固有エンコーディングはMac OS X v10.0以降は使用しません。
代わりに標準のエンコーディングを指定する必要があります。

これらの値はNSStringクラスによってサポートされている、様々な文字エンコーディングを表します。

これは不完全なリストです。

追加のエンコーディングは『String Programming Guide for Core Foundation(CFStringEncodingExt.h参照)』で定義されています。

これらのエンコーディングは、最初にCore FoundationのエンコーディングをCFStringConvertEncodingToNSStringEncoding関数に渡すことによって、NSStringで使用することができます。



参考文献

NSString Class Reference

NSMutableArrayクラス

2010. 10. 24
●概要

NSMutableArrayクラスは、変更可能な配列オブジェクトを管理する、オブジェクトのプログラムインターフェイスを宣言します。

このクラスは基本的な配列の処理動作はNSArrayから継承し、挿入と削除の操作を追加しています。

NSArrayとNSMutableArrayはクラスクラスタの一部で、NSArrayまたはNSMutableArrayクラスの現実のインスタンスの配列ではなく、プライベートなサブクラスの一つです。

NSArrayとNSMutableArrayの配列のクラスはプライベートで、インターフェイスはパブリック、抽象的なスーパークラスにより宣言されています。

NSMutableArrayのメソッドは、以下のプリミティブメソッドを基本概念としています。

    insertObject:atIndex:
    removeObjectAtIndex:
    addObject:
    removeLastObject
    replaceObjectAtIndex:withObject:

サブクラスでは、これらのメソッド全てをオーバーライドする必要がありますが、最初の2つを使って要求する機能を実装するのは非能率的になる可能性があります。

NSMutableArrayのインターフェイスが提供する他のメソッドは、指定した配列の位置にオブジェクトを挿入したり、指定した配列の識別子や位置のオブジェクトを削除する便利な方法を提供します。

NSArrayと同様に、NSMutableArrayのインスタンスはその内容への参照を強固に保持しています。

ガベージコレクションを使用しない場合、配列にオブジェクトを追加する時は、オブジェクトはretainメッセージを受け取ります。

動的配列からオブジェクトを削除する時は、releaseメッセージを受け取ります。

オブジェクトへの参照が無い場合、オブジェクトが解放されていることを意味します。

プログラムがオブジェクトの参照を保持するには、配列から削除される前にオブジェクトにretainメッセージを送らないと参照が無効になります。

例えば以下のコードのように、anObjectをretainする前に配列から削除すると、3行目のでランタイムエラーが発生する可能性があります。

id anObject = [[anArray objectAtIndex:0] retain];
[anArray removeObjectAtIndex:0];
[anObject someMessage];


述語を使用したフィルタリング

filterUsingPredicate:メソッドは、NSPredicateオブジェクトを使ってin-place、in-memoryで配列をフィルタリングします。

Core Dataフレームワークで使用する場合、データストアへの継続的なフェッチの往復無しに、現在の配列オブジェクトに効率的なフィルタリングを提供します。

このメソッドとNSPredicateクラスは、iPhone OS v3.0より前では利用できません。



●タスク

●可変配列の生成と初期化

+ arrayWithCapacity:
– initWithCapacity:

●オブジェクトの追加

– addObject:
– addObjectsFromArray:
– insertObject:atIndex:
– insertObjects:atIndexes:

●オブジェクトの削除

– removeAllObjects
– removeLastObject
– removeObject:
– removeObject:inRange:
– removeObjectAtIndex:
– removeObjectsAtIndexes:
– removeObjectIdenticalTo:
– removeObjectIdenticalTo:inRange:
– removeObjectsInArray:
– removeObjectsInRange:
– removeObjectsFromIndices:numIndices:

●オブジェクトの置換

– replaceObjectAtIndex:withObject:
– replaceObjectsAtIndexes:withObjects:
– replaceObjectsInRange:withObjectsFromArray:range:
– replaceObjectsInRange:withObjectsFromArray:
– setArray:

●コンテンツのフィルタリング

– filterUsingPredicate:

●コンテンツの並べ替え

– exchangeObjectAtIndex:withObjectAtIndex:
– sortUsingDescriptors:
– sortUsingComparator:
– sortWithOptions:usingComparator:
– sortUsingFunction:context:
– sortUsingSelector:



●クラスメソッド



●インスタンスメソッド

addObject:

- (void)addObject:(id)anObject

レシーバの最後に指定したオブジェクトを挿入します。

重要:anObjectがnilの場合、NSInvalidArgumentExceptionが発生します。

anObject:レシーバの内容の最後に追加するオブジェクトを指定します。
この値をnilにしてはいけません。


addObjectsFromArray:

- (void)addObjectsFromArray:(NSArray *)otherArray

レシーバの内容の末尾に、指定した他の配列のオブジェクトを追加します。

otherArray:レシーバの内容の末尾に追加する配列オブジェクトを指定します。


exchangeObjectAtIndex:withObjectAtIndex:

- (void)exchangeObjectAtIndex:(NSUInteger)idx1withObjectAtIndex:(NSUInteger)idx2

指定したインデックスで、レシーバのオブジェクトを交換します。

idx1:idx2で指定したオブジェクトと入れ替えるオブジェクトのインデックスを指定します。

idx2:idx1で指定したオブジェクトと入れ替えるオブジェクトのインデックスを指定します。


insertObject:atIndex:

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index

指定したインデックスにある配列のコンテンツに、指定したオブジェクトを挿入します。

indexで示される場所が既に使用されている場合、indexの示す場所とそれ以降のオブジェクトはインデックス番号にそれぞれ1が加えられてシフトします。

NSArrayオブジェクトはC配列とは異なることに注意してください。

つまり、たとえ配列の生成時にサイズを指定しても、指定したサイズはヒントに過ぎず、実際の配列のサイズは0のままです。

これは配列の現在の要素数より大きいインデックスの場所に、オブジェクトを挿入することはできないことを意味します。

例えば、配列の要素数が2で2つのオブジェクトが含まれている場合、インデックス番号の0、1、2にオブジェクトを追加することができます。

インデックス番号3は範囲外の不正なものとなり、要素数2の配列にインデックス番号3でオブジェクトを追加しようとすると、NSMutableArrayは例外を発生させます。

anObject:配列のコンテンツに追加するオブジェクトを指定します。
この値はnilにすることはできません。
重要:anObjectがnilの場合、NSInvalidArgumentExceptionが発生します。

index:anObjectを挿入するための配列の場所となるインデックスを指定します。
この値は配列の要素数より大きい値を指定することはできません。
重要:配列の要素数を超えるindexを指定した場合、NSRangeExceptionが発生します。


removeObjectAtIndex:

- (void)removeObjectAtIndex:(NSUInteger)index

indexの場所にあるオブジェクトを削除します。

ギャップを埋めるため、index以降の全ての要素はインデックス番号がそれぞれ1が引かれて移動します。

index:配列内のオブジェクトを削除するためのインデックスを指定します。
この値は配列の範囲を超えて指定することはできません。
重要:配列の要素数を超えるindexを場合、NSRangeExceptionが発生します。


removeObjectsInArray:

- (void)removeObjectsInArray:(NSArray *)otherArray

指定した別の配列内のオブジェクトを、レシーバの配列から削除します。

このメソッドはremoveObject:に似ていますが、一回の処理でオブジェクト内の大きなセットを効率的に削除することができます。

otherArray内のオブジェクトがレシーバの配列に含まれていない場合、このメソッドは何の効果も与えません。
(ただし、コンテンツを検索するオーバーヘッドは生じます)

このメソッドは、otherArray内の全ての要素がhashとisEqual:に応答することを前提にしています。

otherArray:レシーバの配列から削除するためのオブジェクトを含む配列を指定します。



参考文献

NSMutableArray Class Reference

NSDictionaryクラス

2010. 10. 24
●概要

NSDictionaryクラスは、キーと値の不変な関連付けを管理するオブジェクトのプログラムインターフェイスを宣言します。

このクラスまたはサブクラスのNSMutableDictionaryは、任意のキーに関連付けられたデータを簡易に且つ効率的に取得する場合に使用します。
(便宜上、厳密な特定のクラスメンバを除いて、これらのクラスのインスタンスを辞書(dictionary)と呼びます)

辞書のキーと値のペアをエントリと呼びます。

各エントリの構成は、キーとキーの値となるオブジェクトで一つのオブジェクトとして表されます。

辞書内でキーは固有のものになります。

一つの辞書の中で、(isEqual:で確認できる)同じキーが2つ存在してはいけません。

キーは(NSCopyingプロトコルに準拠している)任意のオブジェクトを指定できますが、一般的にはキー値コーディングで使用できるよう、キーには文字列を使用します。
(『Key-Value Coding Programming Guide』参照)

キーも値もnilにすることはできません。

辞書内でnull値を表す場合は、NSNullを使用してください。

NSDictionaryのインスタンスは不変辞書なので、エントリを確立して生成した後で変更することはできません。

NSMutableDictionaryのインスタンスは可変辞書で、いつでもエントリの追加や削除ができ、オブジェクトは自動的にメモリを必要に応じて割り当てます。

辞書クラスはNSCopyingとNSMutableCopyingプロトコルを採用しており、他の辞書の型を容易に変換することができます。

NSDictionaryとNSMutableDictionaryはクラスクラスタの一部で、このインターフェイスで生成したオブジェクトは、これら2つのクラスの実際のインスタンスではありません。

正確には、インスタンスはこれらのプライベートサブクラスの一つに属しています。

辞書のクラスはプライベートですがインターフェイスはパブリックで、NSDictionaryとNSMutableDictionaryの抽象的なスーパークラスで宣言されています。

辞書は内部的に、キーに一致する値に迅速にアクセスするため、ストレージの構成にハッシュテーブルを使用しています。

しかしハッシュテーブルやハッシュ関数、キーのハッシュ値などの作業は複雑なため。このクラスタのメソッドの定義からは隔離されています。

メソッドがハッシュ形式ではなく、キーを直接取得する方法を以下で説明します。

(全ての辞書における初期化の一部、または可変辞書における変更として)メソッドが辞書にエントリを追加する際、引数の各キーをコピーし、辞書にコピーを追加します。
(キーはNSCopyingプロトコルに準拠している必要があります)

対応する各値オブジェクトは、辞書に渡す前に解放されないようにretainメッセージを受け取ります。


列挙

辞書のコンテンツとして、keyEnumeratorとobjectEnumeratorで返されるNSEnumeratorオブジェクトを使って、キーや値を列挙することができます。

Mac OS X v10.5以降では、NSDictionaryはNSFastEnumerationプロトコルをサポートします。

辞書のキーをfor...inを使って列挙で構築する例を以下に示します。

NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil];
NSArray *objects = [NSArray arrayWithObjects:@"value1", @"value2", @"value3", nil];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

for (id key in dictionary) {
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]);
}

Mac OS X v10.6以降ではNSDictionaryはブロックオブジェクトを使用した列挙をサポートしています。


基本的なメソッド

NSDictionaryの基本的な三つのメソッド(count、objectForKey:、keyEnumerator)は、他のメソッドのインターフェイスの全ての基礎を提供します。

countメソッドは辞書内のエントリ数を返します。

objectForKey:は指定したキーに関連する値を返します。

keyEnumeratorは辞書内の各キーを反復処理するオブジェクトを返します。

他のメソッドは、一つ以上の三つの基礎的なメソッドを呼び出すことによって処理の宣言をします。

基礎的なメソッド以外は、複数のエントリに一度にアクセスする便利な方法を提供します。


説明と永続性

description...とwriteToFile:atomicallyメソッドは、辞書のプロパティリストの説明に、それぞれ文字列とファイルを書き込むことができます。

これらは一般的に、カステムデータオブジェクトの永続的なストレージに使用されるものではありません。
(『Archives and Serializations Programming Guide』を参照してください)


Toll-Free Bridging

NSDictionaryには『toll-free bridged』の対象としてCore FoundationのCFDictionary Referenceがあります。

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

したがってNSDictionary *パラメータを参照する際、CFDictionaryRefに渡し、CFDictionaryRefパラメータとして参照でき、(コンパイラの警告を抑えるために型変換をして)NSDictionaryインスタンスに渡すこともできます。

この橋渡しは、NSDictionaryの実際のサブクラスに適用されます。

型変換に関する詳細は『toll-free bridging』を参照してください。


サブクラス化

通常、NSDictionaryをサブクラス化する必要はあまりありません。

カスタマイズした動作が必要な場合、サブクラス化するより良い構成を検討してください。

NSDictionaryをサブクラス化する必要がある場合、Class clusterで表されていることを考慮に入れる必要があります。

したがって、基礎的な概念としていくつかの基本的なメソッド

count
objectForKey:
keyEnumerator

を、サブクラスでは全てオーバーライドする必要があります。

NSDictionaryの他のメソッドは、一つ以上のこれら基本的なメソッドを呼び出して処理します。

基礎的なメソッド以外は、複数のエントリに一度にアクセスする便利な方法を提供します。



●タスク

●辞書の生成

+ dictionary
+ dictionaryWithContentsOfFile:
+ dictionaryWithContentsOfURL:
+ dictionaryWithDictionary:
+ dictionaryWithObject:forKey:
+ dictionaryWithObjects:forKeys:
+ dictionaryWithObjects:forKeys:count:
+ dictionaryWithObjectsAndKeys:

●NSDictionaryインスタンスの初期化

– initWithContentsOfFile:
– initWithContentsOfURL:
– initWithDictionary:
– initWithDictionary:copyItems:
– initWithObjects:forKeys:
– initWithObjects:forKeys:count:
– initWithObjectsAndKeys:

●エントリのカウント

– count

●辞書の比較

– isEqualToDictionary:

●キーと値へのアクセス

– allKeys
– allKeysForObject:
– allValues
– getObjects:andKeys:
– objectForKey:
– objectsForKeys:notFoundMarker:
– valueForKey:

●辞書の列挙

– keyEnumerator
– objectEnumerator
– enumerateKeysAndObjectsUsingBlock:
– enumerateKeysAndObjectsWithOptions:usingBlock:

●辞書の並べ替え

– keysSortedByValueUsingSelector:
– keysSortedByValueUsingComparator:
– keysSortedByValueWithOptions:usingComparator:

●辞書のフィルタリング

– keysOfEntriesPassingTest:
– keysOfEntriesWithOptions:passingTest:

●辞書への格納

– writeToFile:atomically:
– writeToURL:atomically:

●ファイル属性へのアクセス

– fileCreationDate
– fileExtensionHidden
– fileGroupOwnerAccountID
– fileGroupOwnerAccountName
– fileHFSCreatorCode
– fileHFSTypeCode
– fileIsAppendOnly
– fileIsImmutable
– fileModificationDate
– fileOwnerAccountID
– fileOwnerAccountName
– filePosixPermissions
– fileSize
– fileSystemFileNumber
– fileSystemNumber
– fileType

●内容の生成

– description
– descriptionInStringsFileFormat
– descriptionWithLocale:
– descriptionWithLocale:indent:



●クラスメソッド

dictionary

+ (id)dictionary

空の辞書を新規作成し、返します。

このメソッドはNSDictionaryクラスのサブクラスであるNSMutableDictionaryを使用するために宣言されています。


dictionaryWithObjectsAndKeys:

+ (id)dictionaryWithObjectsAndKeys:(id)firstObject , ...

指定した値とキーのセットを登録して構成された辞書を生成して返します。

このメソッドはdictionaryWithObjects:forKey:と似ており、キーと値のペアで指定する方法のみ異なります。

例:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
    @"value1", @"key1", @"value2", @"key2", nil];

firstObject:新しい辞書に追加する最初の値を指定します。

...:firstObjectに対する最初のキーを指定し、以降は値とキーを交互に指定するnull終端のリストになります。
キーがnilの場合、NSInvalidArgumentExceptionが発生します。



●インスタンスメソッド

allKeys

- (NSArray *)allKeys

辞書のキーを含む新規配列を返します。

戻り値は辞書のキーを含む新規配列、または辞書に何も登録されていない場合は空配列になります。

配列内の要素の順序は定義されていません。


count

- (NSUInteger)count

辞書内のエントリ数を返します。


initWithContentsOfFile:

- (id)initWithContentsOfFile:(NSString *)path

指定したパスにあるファイル内のキーと値を使って、新規に辞書を割り当てて初期化します。

戻り値は、pathにある辞書を含む初期化された辞書(元のレシーバとは異なる場合があります)、またはファイルの内容の中に辞書として無効な表現が含まれていたりファイルにエラーがあった場合はnilを返します。

pathで示されるファイルの辞書は、プロパティリストオブジェクト(NSString、NSData、NSDate、NSNumber、NSArray、NSDictionaryオブジェクト)のみを含んで表されている必要があります。

詳細は『Property List Programming Guide』を参照してください。

辞書が可変であった場合でも、この辞書に含まれたオブジェクトは不変になります。

path:フルまたは相対パス名を指定します。
pathで示されるファイルは、文字列で表現されたプロパティリストを含む辞書のルートオブジェクトである必要があります。


initWithDictionary:copyItems:

- (id)initWithDictionary:(NSDictionary *)otherDictionary copyItems:(BOOL)flag

指定した別の辞書内に含まれているオブジェクトを使用して、新規に割り当てられた辞書を初期化します。

戻り値として初期化されたオブジェクトは、otherDictionaryで検出されたキーと値を含め、元のレシーバのオブジェクトと異なることがあります。

この方法で初期化された辞書は不変であり、変更することはできません。

copyWithZone:メソッドは浅いコピーを実行します。

任意の深さのコレクション場合、flagパラメータにYESを渡すと、表層下の最初のレベルは不変コピーが実行されます。

NOを渡すと最初のレベルが可変でも影響を受けません。

どちらの場合でも、より深いレベルにある可変は影響を受けません。

otherDictionary:新規の辞書を初期化するキーと値を含む辞書を指定します。

flag:YESの場合、otherDictionaryの各オブジェクトはcopyWithZone:メッセージを受け取ってオブジェクトのコピーを生成します。
オブジェクトはNSCopyingプロトコルに準拠している必要があります。
管理されたメモリ環境下では、retainメッセージの代わりにオブジェクトは受け取ります。
その後オブジェクトのコピーが返される辞書に追加されます。
NOの場合、管理されたメモリ環境下では、返される辞書に追加される時に、otherDictionaryの各オブジェクトは単純にretainメッセージを受け取ります。


initWithObjectsAndKeys:

- (id)initWithObjectsAndKeys:(id)firstObject , ...

指定したキーと値のセットからエントリを組み立てて、新規に割り当てた辞書を初期化します。

このメソッドはinitWithObjects:forKeys:に似ており、キーと値のペアで指定する点が異なっています。

例:

NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
    @"value1", @"key1", @"value2", @"key2", nil];

firstObject:新規辞書に追加する最初の値を指定します。

...:最初にfirstObjectのキーを指定子、以降は値とキーを交互にしたnull終端のリストになります。
キーがnilの場合、NSInvalidArgumentExceptionが発生します。


objectForKey:

- (id)objectForKey:(id)aKey

指定したキーの値オブジェクトを返します。

キーに対応する値が無い場合はnilを返します。

aKey:取得する値のキーを指定します


valueForKey:

- (id)valueForKey:(NSString *)key

指定したキーに関連付けされた値を返します。

keyが『@』で始まっていない場合はobjectForKey:を呼び出します。

keyが『@』で始まっている場合は、『@』を取り除いた残りの部分で [super valueForKey:] を呼び出します。

key:対応する値を返すためのキーを指定します。
キー値コーディングを使用する場合、キーは文字列である必要があります。
(『Key-Value Coding Programming Guide』を参照してください)



参考文献

NSDictionary Class Reference

NSMutableDictionaryクラス

2010. 10. 24
●概要

NSMutableDictionaryクラスは、可変可能なキーと値を関連付けして管理するオブジェクトのプログラムインターフェイスを宣言します。

基本的な操作はNSDictionaryから継承し、追加変更処理を行えます。

サブクラス化の注意

通常、NSMutableDictionaryをサブクラス化する必要は少ないです。

動作をカスタマイズする必要がある場合は、サブクラス化より構成を考慮する方が良いでしょう。

メソッドのオーバーライド

サブクラスでは二つの原始的なメソッドをオーバーライドする必要があります。

    setObject:forKey:
    removeObjectForKey:

またNSDictionaryクラスの原始的なメソッドもオーバーライドする必要があります。



●タスク

●可変辞書の生成と初期化

+ dictionaryWithCapacity:
– initWithCapacity:

●可変辞書へのエントリの追加

– setObject:forKey:
– setValue:forKey:
– addEntriesFromDictionary:
– setDictionary:

●可変辞書からのエントリの削除

– removeObjectForKey:
– removeAllObjects
– removeObjectsForKeys:



●クラスメソッド

dictionaryWithCapacity:

+ (id)dictionaryWithCapacity:(NSUInteger)numItems

numItemsで指定したエントリ数を保持するのに十分なメモリを割り当て、可変辞書を生成して返します。

可変辞書は必要に応じてメモリを追加して割り当てるので、numItemsは単純にオブジェクトの初期容量を確立するためのものです。

numItems:新規辞書の初期容量を指定します。



●インスタンスメソッド

initWithCapacity:

- (id)initWithCapacity:(NSUInteger)numItems

numItemsで指定したエントリ数を保持するのに十分なメモリを割り当て、可変辞書を生成して返します。

可変辞書は必要に応じてメモリを追加して割り当てるので、numItemsは単純にオブジェクトの初期容量を確立するためのものです。

numItems:新規辞書の初期容量を指定します。


setObject:forKey:

- (void)setObject:(id)anObject forKey:(id)aKey

レシーバにキーと値のペアを追加します。

キーまたは値がnilの場合、NSInvalidArgumentExceptionが呼び出されます。

nil値を使いたい場合はNSNullを使用してください。

aKeyが既にレシーバにある場合、レシーバの以前の値オブジェクトにreleaseメッセージが送られ、その場所にanObjectが置かれます。

anObject:キーと対になる値オブジェクトを指定します。
この値をnilに設定してはいけません。

aKey:値と対になるキーを指定します。
キーはNSCopyingプロトコルに従い、copyWithZone:を使用してコピーされます。
この値をnilに設定してはいけません。


setValue:forKey:

- (void)setValue:(id)value forKey:(NSString *)key

辞書にキーと値のペアを追加します。

このメソッドはsetObject:forKey:を使って辞書にvalueとkeyを追加します。

valueがnilの場合、removeObjectForKey:を使ってkeyの削除を試みます。

value:keyの値を指定します。

key:valueのキーを指定します。
キー値コーディングを使用する場合、キーは文字列である必要があります。
(『Key-Value Coding Programming Guide』を参照してください)



参考文献

NSMutableDictionary Class Reference

NSSetクラス

2010. 10. 24
●概要

NSSet、NSMutableSetNSCountedSetクラスは、オブジェクトのセットを管理する、オブジェクトのプログラムインターフェイスを宣言します。

NSSetは、集合の数学的概念のサポートを提供します。

セットは数学的観念とNSSetの実装の両方の意味があり、要素の異なる順序無しの集合を指します。

NSSetのサブクラスであるNSMutableSetとNSMutableSetのサブクラスであるNSCountedSetクラスは、内容が変更できるセットを提供します。

NSSetとNSMutableSetはクラスクラスタの一部であり、セットは実際のNSSetまたはNSMutableSetのインスタンスではありません。

むしろインスタンスは、プライベートサブクラスの一つとして属しています。
(利便性のため、厳密なクラスの一員としてではなく、これらのインスタンスいずれかに属する条件のセットを使用します)

とはいえセットのクラスはプライベート、インターフェイスはパブリックで、NSSetとNSMutableSetは抽象的なスーパークラスとして宣言されています。

ただし、NSCountedSetはクラスクラスタの一部ではなく、NSMutableSetのサブクラスとして具現化されています。

NSSetは、静的なオブジェクトのセットのプログラムインターフェイスを宣言します。

静的なセットは生成時に情報を入力し、その後の情報入力の修正はできない規定になっています。

もう一方のNSMutableSetは、動的なオブジェクトのセットのプログラムインターフェイスを宣言します。

動的(または可変)セットは、いつでも情報入力の追加と削除をすることができ、メモリは必要に応じて自動的に確保します。

要素の順序が重要ではなく、セットに含めるオブジェクトの性能を考査した上で、セットの代わりに配列を使うこともできます。
(配列には順序があり、要素によってはセットより遅い場合があります)

セットのオブジェクトは、NSObjectプロトコルメソッドのhashとisEqual:に応答する必要があります。

セット内に可変オブジェクトを格納する場合、可変オブジェクトの内部状態にオブジェクトのhashメソッドが依存しない、またはセット内の可変オブジェクトを修正しないことに注意してください。
(集合内に可変オブジェクトを与えることはできますが、困難なことに注意してください)

セットに追加するオブジェクトはコピーではなく、セットへ追加する前にオブジェクトはretainメッセージを受け取ります。

通常、一時的なセットの生成には、NSSetクラスオブジェクトのset~メソッドの内のひとつを送ります。

これらのメソッドは、(もしあれば)引数を渡して、要素を含むNSSetオブジェクトを返します。

setメソッドは便利なメソッドで、空の可変セットを生成します。

セットクラスはNSCopyingとNSMutableCopyingプロトコルを採用し、もう一方のタイプのセットへの変換を容易に行えます。

NSSetは、セットの要素を問い合わせるメソッドを提供します。

allObjectsは、セット内のオブジェクトを含む配列を返します。

anyObjectは、セット内のいくつかのオブジェクトを返します。

countは、セット内の現在のオブジェクト数を返します。

member:は、指定したオブジェクトと同じセット内のオブジェクトを返します。

また、intersectsSet:はセットの積集合(2つのセット間の共通要素)かを分析、isEqualToSet:は同一性かを分析、isSubsetOfSet:は部分集合(あるセットがもう一つのサブセット)かを分析します。

objectEnumeratorメソッドは、セットの要素の順次走査を提供します。

Mac OS X v10.5以降ではより性能を向上した、Objective-Cを使った高速列挙が使用できます。

NSSetのmakeObjectsPerformSelector:とmakeObjectsPerformSelector:withObject:メソッドは、セット内の個々のオブジェクトにメッセージを送ることができます。

NSSetには『toll-free bridged』の対象としてCore FoundationのCFSet Referenceがあります。

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

したがってNSSet *パラメータを参照する際、CFSetRefに渡し、CFSetRefパラメータとして参照でき、(コンパイラの警告を抑えるために型変換をして)NSSetインスタンスに渡すこともできます。



●タスク

●セットの生成

+ set
+ setWithArray:
+ setWithObject:
+ setWithObjects:
+ setWithObjects:count:
+ setWithSet:
– setByAddingObject:
– setByAddingObjectsFromSet:
– setByAddingObjectsFromArray:

●セットの初期化

– initWithArray:
– initWithObjects:
– initWithObjects:count:
– initWithSet:
– initWithSet:copyItems:

●要素のカウント

– count

●セットメンバーへのアクセス

- allObjects
– anyObject
– containsObject:
– filteredSetUsingPredicate:
– makeObjectsPerformSelector:
– makeObjectsPerformSelector:withObject:
– member:
– objectEnumerator
– enumerateObjectsUsingBlock:
– enumerateObjectsWithOptions:usingBlock:
– objectsPassingTest:
– objectsWithOptions:passingTest:

●セットの比較

– isSubsetOfSet:
– intersectsSet:
– isEqualToSet:
– valueForKey:
– setValue:forKey:

●ソートした配列の生成

– sortedArrayUsingDescriptors:

●キー値の監視

– addObserver:forKeyPath:options:context:
– removeObserver:forKeyPath:

●セットの記述

– description
– descriptionWithLocale:



●クラスメソッド

set

+ (id)set

空のセットを新規作成し、返します。

このメソッドはNSSetクラスのサブクラスであるNSMutableSetを使用するために宣言されています。



●インスタンスメソッド

allObjects

- (NSArray *)allObjects

セットのメンバーに含まれている配列、またはセットにメンバーが無い場合は空の配列を返します。

配列内のオブジェクトの順序は定義されていません。


anyObject

- (id)anyObject

レシーバの中のオブジェクトを一つ、またレシーバにオブジェクトが含まれていない場合はnilを返します。

返されるオブジェクトは、レシーバの都合の良いものが選ばれます。
(この選抜はランダムであることが保証されていません)


count

- (NSUInteger)count

レシーバのセットの要素数を返します。


objectEnumerator

- (NSEnumerator *)objectEnumerator

レシーバのセットからオブジェクトを取り出し、列挙子として返します。

NSEnumerator *enumerator = [mySet objectEnumerator];
id value;

while ((value = [enumerator nextObject])) {
    /* code that acts on the set's values */
}

このメソッドはNSSetの可変サブクラスであるNSMutableSetクラスで使用されますが、この最中にレシーバのセットを改変してはいけません。

レシーバのセットに変更を加えたい場合は、allObjectsメソッドでセットのスナップショットを作って使用してください。

スナップショットで加えた変更は、オリジナルのセットに反映されません。



参考文献

NSSet Class Reference

NSMutableSetクラス

2010. 10. 24
●概要

NSMutableSetクラスは、順序付けされていない異なるオブジェクトの可変コレクションのプログラムインターフェイスを宣言します。

NSCountedSetクラスはNSMutableSetの具象サブクラスで、同じ要素の複数のインスタンスを含むことができる可変セットをサポートします。

NSSetクラスは不変セットの生成と管理をサポートします。

サブクラス化の注意

サブクラス化の必要性は少ないと思われます。

動作をカスタマイズする必要がある場合は、サブクラス化の代わりに構成を考慮する方が望ましいといえます。

メソッドのオーバーライド

サブクラスでは原始的なメソッドの双方をオーバーライドする必要があります。

addObject:
removeObject:

またNSSetクラスの原始的なメソッドもオーバーライドする必要があります。



●タスク

●可変セットの生成

+ setWithCapacity:
– initWithCapacity:

●エントリの追加と削除

– addObject:
– filterUsingPredicate:
– removeObject:
– removeAllObjects
– addObjectsFromArray:

●セットの結合と分離

– unionSet:
– minusSet:
– intersectSet:
– setSet:



●クラスメソッド



●インスタンスメソッド

addObject:

- (void)addObject:(id)anObject

(既に登録されている要素でなければ)レシーバにオブジェクトを追加します。

既に登録済みの場合、このメソッドはレシーバのセットおよびanObjectに何の効果も与えません。

anObject:追加するオブジェクトを指定します。



参考文献

NSMutableSet Class Reference

NSEnumeratorクラス

2010. 10. 24
●概要

NSEnumeratorは抽象クラスで、配列や辞書など、他のオブジェクトのコレクションを列挙するサブクラスのインスタンスです。

全ての生成メソッドはコレクションクラス(NSArrayやNSSet、NSDictionaryなど)で定義され、コンテンツを列挙するために特別なNSEnumeratorオブジェクトを提供しています。

例えばNSArrayには、NSEnumeratorオブジェクトを返すobjectEnumeratorreverseObjectEnumeratorの2つのメソッドがあります。

NSDictionaryには、NSEnumeratorオブジェクトを返すkeyEnumeratorobjectEnumeratorの2つのメソッドがあります。

これらのメソッドは、それぞれキーまたは値によって辞書のコンテンツを列挙することができます。

新規に生成したNSEnumeratorオブジェクトに繰り返しnextObjectを送信すると、元のコレクションから次のオブジェクトを返します。

コレクションが空になった場合はnilを返します。

コレクションが空になった後で、列挙子をリセットすることはできません。

コレクションから再び列挙を行うには、新たに列挙子を作る必要があります。

NSArrayやNSDictionary、NSSetで使用される列挙子のサブクラスは、列挙中のコレクションを保持します。

列挙が空になった時には、コレクションは解放されます。

:列挙中の可変コレクションを変更することは安全ではありません。
いくつかの列挙子は、現在コレクションの列挙子を変更することを許可していますが、将来に渡ってサポートを保証するものではありません。



●タスク

●列挙オブジェクトの取得

– allObjects
– nextObject



●インスタンスメソッド

nextObject

- (id)nextObject

コレクションの列挙子の中から次のオブジェクトを取り出します。

全てのオブジェクトが取り出された場合はnilを返します。

NSArray *anArray = // ... ;
NSEnumerator *enumerator = [anArray objectEnumerator];
id object;

while ((object = [enumerator nextObject])) {
    // do something with object...
}



参考文献

NSEnumerator Class Reference






SoundSport Pulse wireless headphones
Calendar
09 | 2010/10 | 11
Sun Mon Tue Wed Thu Fri Sat
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

SoundSport Pulse wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR