SOFTWARE さまざまなジャンルから選べる、 楽し …...SOFTWARE さまざまなジャンルから選べる、 楽しめる。 充実の R LOOX 21 NX NF MG 利用目的
いまさら NSArray
-
Upload
tetsuya-kaneuchi -
Category
Technology
-
view
677 -
download
1
description
Transcript of いまさら NSArray
![Page 1: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/1.jpg)
いまさら NSArrayかねうちてつや
Cocoa勉強会関西 2013.12.14
![Page 2: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/2.jpg)
NSArray
• Foundation のコレクションクラスのひとつ
• インデックス付きでオブジェクトを格納
• クラスクラスタを構成
• 関連: NSMutableArray, NSSet
![Page 3: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/3.jpg)
クラスクラスタ
• NSArray そのものは抽象クラス
• イニシャライザが具象サブクラスのインスタンスを生成
• 具象サブクラスは非公開
• サブクラス化できる設計になっている
![Page 4: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/4.jpg)
NSArray のサブクラス
• count と objectAtIndex: をオーバーライドすれば完成
• 好きなデータに NSArray インタフェースでアクセス
• 他のオブジェクト、ファイルシステム、データベース…
• 必ずしもデータをメモリに置かなくてもよい
![Page 5: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/5.jpg)
NSArray ビュー
• もともとは NSArray になっていないデータに NSArray としてアクセスできるようにする
• 元のデータが変更されるとビューにも反映される
• NSArray は多くのフレームワークで充実したサポートがあるので利用用途が広い
• NSSet ビューとかも考えられる
![Page 6: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/6.jpg)
NSArray ビューの例
• 別の NSArray の逆順に並んでいる NSArray ビュー
• 2 つの NSArray を連結した NSArray ビュー
• 文字列の1文字ずつを要素として持つ NSArray ビュー
![Page 7: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/7.jpg)
Demo
![Page 8: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/8.jpg)
NSArray のプロパティ• あるオブジェクトが持つコレクションへのアクセスを外部に提供したい
• NSMutableArray を返してしまうと、オブジェクト外から変更される可能性があってヤダ
• そもそも NSArray じゃないんだけど
• コレクションの中身を lazy に初期化したい
• immutable な NSArray ビューを返しましょう!
![Page 9: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/9.jpg)
KVC と NSArray
• サブクラスを作らなくても NSArray ビューを返せる
• - (NSUInteger)countOfElements
• - (id)objectInElementsAtIndex:(NSUInteger)index;
• [obj valueForKey:@“elements”]
![Page 10: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/10.jpg)
Demo
![Page 11: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/11.jpg)
まとめ
• NSArray のサブクラスは簡単に作れる
• NSArray ビューはいろいろ用途があって楽しい
• KVC でサブクラスなしで NSArray ビューを公開できる
• KVC で NSSet や mutable コレクションも返せる
![Page 12: いまさら NSArray](https://reader033.fdocument.pub/reader033/viewer/2022052316/558e14d11a28abe75a8b4619/html5/thumbnails/12.jpg)
参考
• NSArray Class Reference
• Key-Value Coding Programming Guide
• Key-Value Coding Accessor Methods