いまさら nsarray

12
いまさら NSArray かねうちてつや Cocoa 勉強会関西 2013.12.14

Upload: tetsuya-kaneuchi

Post on 27-Jun-2015

677 views

Category:

Technology


1 download

DESCRIPTION

Cocoa 勉強会関西での発表資料です。

TRANSCRIPT

Page 1: いまさら NSArray

いまさら NSArrayかねうちてつや

Cocoa勉強会関西 2013.12.14

Page 2: いまさら NSArray

NSArray

• Foundation のコレクションクラスのひとつ

• インデックス付きでオブジェクトを格納

• クラスクラスタを構成

• 関連: NSMutableArray, NSSet

Page 3: いまさら NSArray

クラスクラスタ

• NSArray そのものは抽象クラス

• イニシャライザが具象サブクラスのインスタンスを生成

• 具象サブクラスは非公開

• サブクラス化できる設計になっている

Page 4: いまさら NSArray

NSArray のサブクラス

• count と objectAtIndex: をオーバーライドすれば完成

• 好きなデータに NSArray インタフェースでアクセス

• 他のオブジェクト、ファイルシステム、データベース…

• 必ずしもデータをメモリに置かなくてもよい

Page 5: いまさら NSArray

NSArray ビュー

• もともとは NSArray になっていないデータに NSArray としてアクセスできるようにする

• 元のデータが変更されるとビューにも反映される

• NSArray は多くのフレームワークで充実したサポートがあるので利用用途が広い

• NSSet ビューとかも考えられる

Page 6: いまさら NSArray

NSArray ビューの例

• 別の NSArray の逆順に並んでいる NSArray ビュー

• 2 つの NSArray を連結した NSArray ビュー

• 文字列の1文字ずつを要素として持つ NSArray ビュー

Page 7: いまさら NSArray

Demo

Page 8: いまさら NSArray

NSArray のプロパティ• あるオブジェクトが持つコレクションへのアクセスを外部に提供したい

• NSMutableArray を返してしまうと、オブジェクト外から変更される可能性があってヤダ

• そもそも NSArray じゃないんだけど

• コレクションの中身を lazy に初期化したい

• immutable な NSArray ビューを返しましょう!

Page 9: いまさら NSArray

KVC と NSArray

• サブクラスを作らなくても NSArray ビューを返せる

• - (NSUInteger)countOfElements

• - (id)objectInElementsAtIndex:(NSUInteger)index;

• [obj valueForKey:@“elements”]

Page 10: いまさら NSArray

Demo

Page 11: いまさら NSArray

まとめ

• NSArray のサブクラスは簡単に作れる

• NSArray ビューはいろいろ用途があって楽しい

• KVC でサブクラスなしで NSArray ビューを公開できる

• KVC で NSSet や mutable コレクションも返せる

Page 12: いまさら NSArray

参考

• NSArray Class Reference

• Key-Value Coding Programming Guide

• Key-Value Coding Accessor Methods