2012/03/26

ラッパークラスについて:Objective-C

ラッパークラスってなに?

まず前提として、int型等の基本的な変数はオブジェクト化されていません。ただし、Objective-Cで用意されている基本的なクラス群の中には引数を必ずオブジェクト型で渡さないといけないメソッドがたくさん定義されています。

そこで、int型などの数値をオブジェクトとして扱う必要があるため、その時のためにラッパークラスが用意されています。
つまり、ラッパークラスは数値などをオブジェクト化するためのクラス、ということになります。

ラッパークラスNSNumbrerでラップしてみる

まずは
NSNumber *wrappedInt = [NSNumber numberWithInt:123]; //インスタンス生成メソッドを利用してオブジェクト生成
もしくは
NSNumber *wrappedInt = [[NSNumber alloc] initWithInt]];  //イニシャライザを利用してオブジェクト生成
でInt型のラッパークラスのインスタンスを生成する。

※上記の2つにはメモリ管理の視点から見ると違いがあるらしいので、後々勉強が必要。

ラップされた値を取り出す

NSNumberオブジェクトからラップされている値を取り出すときにはいろんな型で取り出すことができる。 たとえば、 [wrappedInt intValue] とか [wrappedInt doubleValue] とか [wrappedInt stringValue] とかで取り出せる。

0 件のコメント:

コメントを投稿