SlideShare a Scribd company logo
いまさら NSArray
かねうちてつや
Cocoa勉強会関西
2013.12.14
NSArray
•

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

•

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

•

クラスクラスタを構成

•

関連: NSMutableArray, NSSet
クラスクラスタ
•

NSArray そのものは抽象クラス

•

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

•

具象サブクラスは非公開

•

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

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

•

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

•

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

•

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

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

•

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

•

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

•

NSSet ビューとかも考えられる
NSArray ビューの例

•

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

•

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

•

文字列の1文字ずつを要素として持つ NSArray ビュー
Demo
NSArray のプロパティ
•

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

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

•

•

•

そもそも NSArray じゃないんだけど
コレクションの中身を lazy に初期化したい

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

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

•

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

[obj valueForKey:@“elements”]
Demo
まとめ
•

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

•

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

•

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

•

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

•

NSArray Class Reference

•

Key-Value Coding Programming Guide
•

Key-Value Coding Accessor Methods

More Related Content

Viewers also liked

Het Nieuwe Werken En Tijdregistratie
Het Nieuwe Werken En TijdregistratieHet Nieuwe Werken En Tijdregistratie
Het Nieuwe Werken En Tijdregistratie
Bieke Van Baelen
 
22 October 2012
22 October 201222 October 2012
22 October 2012renabivens
 
Rise of Islam I: The Prophet
Rise of Islam I: The ProphetRise of Islam I: The Prophet
Rise of Islam I: The Prophetssclasstorremar
 
Granero leve-2012
Granero leve-2012Granero leve-2012
Granero leve-2012mapple2012
 
Regali equo solidali 2013
Regali equo solidali 2013Regali equo solidali 2013
Regali equo solidali 2013
LiberoMondo
 
Correlation between corrosion inhibitive effect and quantum molecular structu...
Correlation between corrosion inhibitive effect and quantum molecular structu...Correlation between corrosion inhibitive effect and quantum molecular structu...
Correlation between corrosion inhibitive effect and quantum molecular structu...
Al Baha University
 
Scopus author feedback
Scopus author feedbackScopus author feedback
Scopus author feedback
Al Baha University
 
Scott Pechstein – Why buying 3rd party is still the most efficient advertisement
Scott Pechstein – Why buying 3rd party is still the most efficient advertisementScott Pechstein – Why buying 3rd party is still the most efficient advertisement
Scott Pechstein – Why buying 3rd party is still the most efficient advertisement
Sean Bradley
 
Checkpoint 2 - Cognição
Checkpoint 2 - CogniçãoCheckpoint 2 - Cognição
Checkpoint 2 - Cognição
Natanael Bandeira
 
47. الوصية الخامسة سلسله عظات الوصايا العشر القس كرم لامعى صباح الأح...
47. الوصية الخامسة     سلسله عظات الوصايا العشر   القس كرم لامعى    صباح الأح...47. الوصية الخامسة     سلسله عظات الوصايا العشر   القس كرم لامعى    صباح الأح...
47. الوصية الخامسة سلسله عظات الوصايا العشر القس كرم لامعى صباح الأح...
Ibrahimia Church Ftriends
 
انشودة الرجاء فى ليل الشقاء منبر الكنيسه الإنجيليه بالإبراهيميه- ا...
انشودة     الرجاء     فى ليل الشقاء    منبر الكنيسه الإنجيليه بالإبراهيميه- ا...انشودة     الرجاء     فى ليل الشقاء    منبر الكنيسه الإنجيليه بالإبراهيميه- ا...
انشودة الرجاء فى ليل الشقاء منبر الكنيسه الإنجيليه بالإبراهيميه- ا...
Ibrahimia Church Ftriends
 
Training and development
Training and developmentTraining and development
Training and developmentAnkur Tiwari
 
ATM for India : STAGE 1 @ IDC
ATM for India : STAGE 1 @ IDCATM for India : STAGE 1 @ IDC
ATM for India : STAGE 1 @ IDC
rayr28
 
Egypt for world well being
Egypt for world well beingEgypt for world well being
Egypt for world well being
Ibrahimia Church Ftriends
 
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميهوحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميه
Ibrahimia Church Ftriends
 
الخطر ليهودى بروتكولات حكماء صهيون
الخطر ليهودى   بروتكولات حكماء صهيونالخطر ليهودى   بروتكولات حكماء صهيون
الخطر ليهودى بروتكولات حكماء صهيون
Ibrahimia Church Ftriends
 
القس فاروق الديرى درس كتاب - الحنان- رحله فى سفر الاعمال (2)
القس فاروق الديرى  درس كتاب - الحنان- رحله فى سفر الاعمال                   (2)القس فاروق الديرى  درس كتاب - الحنان- رحله فى سفر الاعمال                   (2)
القس فاروق الديرى درس كتاب - الحنان- رحله فى سفر الاعمال (2)
Ibrahimia Church Ftriends
 
Clean code
Clean codeClean code
Clean code
Jean Carlo Machado
 

Viewers also liked (20)

Het Nieuwe Werken En Tijdregistratie
Het Nieuwe Werken En TijdregistratieHet Nieuwe Werken En Tijdregistratie
Het Nieuwe Werken En Tijdregistratie
 
22 October 2012
22 October 201222 October 2012
22 October 2012
 
Rise of Islam I: The Prophet
Rise of Islam I: The ProphetRise of Islam I: The Prophet
Rise of Islam I: The Prophet
 
Granero leve-2012
Granero leve-2012Granero leve-2012
Granero leve-2012
 
Regali equo solidali 2013
Regali equo solidali 2013Regali equo solidali 2013
Regali equo solidali 2013
 
Correlation between corrosion inhibitive effect and quantum molecular structu...
Correlation between corrosion inhibitive effect and quantum molecular structu...Correlation between corrosion inhibitive effect and quantum molecular structu...
Correlation between corrosion inhibitive effect and quantum molecular structu...
 
Scopus author feedback
Scopus author feedbackScopus author feedback
Scopus author feedback
 
Scott Pechstein – Why buying 3rd party is still the most efficient advertisement
Scott Pechstein – Why buying 3rd party is still the most efficient advertisementScott Pechstein – Why buying 3rd party is still the most efficient advertisement
Scott Pechstein – Why buying 3rd party is still the most efficient advertisement
 
Checkpoint 2 - Cognição
Checkpoint 2 - CogniçãoCheckpoint 2 - Cognição
Checkpoint 2 - Cognição
 
47. الوصية الخامسة سلسله عظات الوصايا العشر القس كرم لامعى صباح الأح...
47. الوصية الخامسة     سلسله عظات الوصايا العشر   القس كرم لامعى    صباح الأح...47. الوصية الخامسة     سلسله عظات الوصايا العشر   القس كرم لامعى    صباح الأح...
47. الوصية الخامسة سلسله عظات الوصايا العشر القس كرم لامعى صباح الأح...
 
Early civilizations
Early civilizationsEarly civilizations
Early civilizations
 
انشودة الرجاء فى ليل الشقاء منبر الكنيسه الإنجيليه بالإبراهيميه- ا...
انشودة     الرجاء     فى ليل الشقاء    منبر الكنيسه الإنجيليه بالإبراهيميه- ا...انشودة     الرجاء     فى ليل الشقاء    منبر الكنيسه الإنجيليه بالإبراهيميه- ا...
انشودة الرجاء فى ليل الشقاء منبر الكنيسه الإنجيليه بالإبراهيميه- ا...
 
Training and development
Training and developmentTraining and development
Training and development
 
ATM for India : STAGE 1 @ IDC
ATM for India : STAGE 1 @ IDCATM for India : STAGE 1 @ IDC
ATM for India : STAGE 1 @ IDC
 
Egypt for world well being
Egypt for world well beingEgypt for world well being
Egypt for world well being
 
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميهوحي من جهة مصر    القس كرم لامعى  - ونبر الكنيسه الانجيليه بالابراهيميه
وحي من جهة مصر القس كرم لامعى - ونبر الكنيسه الانجيليه بالابراهيميه
 
Mob sec
Mob secMob sec
Mob sec
 
الخطر ليهودى بروتكولات حكماء صهيون
الخطر ليهودى   بروتكولات حكماء صهيونالخطر ليهودى   بروتكولات حكماء صهيون
الخطر ليهودى بروتكولات حكماء صهيون
 
القس فاروق الديرى درس كتاب - الحنان- رحله فى سفر الاعمال (2)
القس فاروق الديرى  درس كتاب - الحنان- رحله فى سفر الاعمال                   (2)القس فاروق الديرى  درس كتاب - الحنان- رحله فى سفر الاعمال                   (2)
القس فاروق الديرى درس كتاب - الحنان- رحله فى سفر الاعمال (2)
 
Clean code
Clean codeClean code
Clean code
 

More from Tetsuya Kaneuchi

いま OS X アプリがアツい
いま OS X アプリがアツいいま OS X アプリがアツい
いま OS X アプリがアツい
Tetsuya Kaneuchi
 
Dependency Injection FAQ
Dependency Injection FAQDependency Injection FAQ
Dependency Injection FAQ
Tetsuya Kaneuchi
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
 
Core Animation と View
Core Animation と ViewCore Animation と View
Core Animation と View
Tetsuya Kaneuchi
 
Core Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStoreCore Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStore
Tetsuya Kaneuchi
 
WebViewでエラーページを表示する話
WebViewでエラーページを表示する話WebViewでエラーページを表示する話
WebViewでエラーページを表示する話
Tetsuya Kaneuchi
 
MVCもやもや話
MVCもやもや話MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
 

More from Tetsuya Kaneuchi (7)

いま OS X アプリがアツい
いま OS X アプリがアツいいま OS X アプリがアツい
いま OS X アプリがアツい
 
Dependency Injection FAQ
Dependency Injection FAQDependency Injection FAQ
Dependency Injection FAQ
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだ
 
Core Animation と View
Core Animation と ViewCore Animation と View
Core Animation と View
 
Core Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStoreCore Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStore
 
WebViewでエラーページを表示する話
WebViewでエラーページを表示する話WebViewでエラーページを表示する話
WebViewでエラーページを表示する話
 
MVCもやもや話
MVCもやもや話MVCもやもや話
MVCもやもや話
 

Recently uploaded

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 

Recently uploaded (15)

【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 

いまさら NSArray