Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
次朗 永島
16,365 views
CoreData 非同期データ処理
Technology
◦
Read more
36
Save
Share
Embed
Embed presentation
Download
Downloaded 59 times
1
/ 29
2
/ 29
3
/ 29
4
/ 29
5
/ 29
6
/ 29
7
/ 29
8
/ 29
9
/ 29
10
/ 29
11
/ 29
12
/ 29
13
/ 29
14
/ 29
15
/ 29
16
/ 29
17
/ 29
18
/ 29
19
/ 29
20
/ 29
21
/ 29
22
/ 29
23
/ 29
24
/ 29
25
/ 29
26
/ 29
27
/ 29
28
/ 29
29
/ 29
More Related Content
PDF
PHP 2大 web フレームワークの徹底比較!
by
Shohei Okada
PDF
Embulk 20150411
by
Hiroshi Nakamura
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
by
JustSystems Corporation
PPT
実行時のために最適なデータ構造を作成しよう
by
Hiroki Omae
PDF
fluentd を利用した大規模ウェブサービスのロギング
by
Yuichi Tateno
PDF
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
by
次朗 永島
PPT
Mongodb
by
Satoru Mikami
PDF
Nginx
by
Soichi Takamura
PHP 2大 web フレームワークの徹底比較!
by
Shohei Okada
Embulk 20150411
by
Hiroshi Nakamura
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
by
JustSystems Corporation
実行時のために最適なデータ構造を作成しよう
by
Hiroki Omae
fluentd を利用した大規模ウェブサービスのロギング
by
Yuichi Tateno
RestKitの紹介 - Webサービスのクライアント実装補助フレームワーク -
by
次朗 永島
Mongodb
by
Satoru Mikami
Nginx
by
Soichi Takamura
What's hot
PDF
DBスキーマもバージョン管理したい!
by
kwatch
PDF
Babelfish Compatibility
by
Noriyoshi Shinoda
PPTX
Wpfと非同期
by
yone64
PPTX
FIWAREシステム内の短期履歴の管理
by
fisuda
PDF
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
by
Mikiya Okuno
PDF
今からでも大丈夫!Firebase入門
by
Tomoki Koga
PDF
Html5 Web Applications
by
totty jp
PDF
イマドキの現場で使えるJavaライブラリ事情
by
takezoe
PDF
Slub alloc and free
by
Masami Ichikawa
PPT
Handlersocket 20140218
by
akirahiguchi
PPTX
JavaでインメモリSQLエンジンを作ってみた
by
JustSystems Corporation
PPTX
Androidで使えるJSON-Javaライブラリ
by
Yukiya Nakagawa
PDF
Pro aspnetmvc3framework chap19
by
Hideki Hashizume
PPTX
Selenium webdriver使ってみようず
by
Oda Shinsuke
PDF
CRAN Task Views でパッケージ管理
by
Kosei ABE
KEY
Blocksの活用法
by
Hidetoshi Mori
PDF
実践Knockout
by
Kazuhiro Eguchi
PDF
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
by
なおき きしだ
PDF
OpenStack API
by
Akira Yoshiyama
PDF
JavaOne2015報告またはこれからのJava
by
なおき きしだ
DBスキーマもバージョン管理したい!
by
kwatch
Babelfish Compatibility
by
Noriyoshi Shinoda
Wpfと非同期
by
yone64
FIWAREシステム内の短期履歴の管理
by
fisuda
What's New in MySQL 5.7 Optimizer @MySQL User Conference Tokyo 2015
by
Mikiya Okuno
今からでも大丈夫!Firebase入門
by
Tomoki Koga
Html5 Web Applications
by
totty jp
イマドキの現場で使えるJavaライブラリ事情
by
takezoe
Slub alloc and free
by
Masami Ichikawa
Handlersocket 20140218
by
akirahiguchi
JavaでインメモリSQLエンジンを作ってみた
by
JustSystems Corporation
Androidで使えるJSON-Javaライブラリ
by
Yukiya Nakagawa
Pro aspnetmvc3framework chap19
by
Hideki Hashizume
Selenium webdriver使ってみようず
by
Oda Shinsuke
CRAN Task Views でパッケージ管理
by
Kosei ABE
Blocksの活用法
by
Hidetoshi Mori
実践Knockout
by
Kazuhiro Eguchi
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
by
なおき きしだ
OpenStack API
by
Akira Yoshiyama
JavaOne2015報告またはこれからのJava
by
なおき きしだ
Viewers also liked
PDF
CoreDataをバックグラウンドで扱うためのTips
by
Yohei Yamaguchi
PDF
Core Data バッドプラクティス
by
Kaname Noto
PDF
やはりお前らのCore Dataの使い方も間違っている
by
今城 善矩
PDF
Core dataと比較してrealmを使ったまとめ
by
Fumiya Sakai
PDF
Adventures in Multithreaded Core Data
by
Inferis
PDF
High Performance Core Data
by
Matthew Morey
KEY
初めての単体テスト
by
Basuke Suzuki
PDF
Objective-Cのいろいろな反復処理
by
Kosuke Ogawa
CoreDataをバックグラウンドで扱うためのTips
by
Yohei Yamaguchi
Core Data バッドプラクティス
by
Kaname Noto
やはりお前らのCore Dataの使い方も間違っている
by
今城 善矩
Core dataと比較してrealmを使ったまとめ
by
Fumiya Sakai
Adventures in Multithreaded Core Data
by
Inferis
High Performance Core Data
by
Matthew Morey
初めての単体テスト
by
Basuke Suzuki
Objective-Cのいろいろな反復処理
by
Kosuke Ogawa
Recently uploaded
PDF
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
by
NTT DATA Technology & Innovation
PDF
visionOS TC「新しいマイホームで過ごすApple Vision Proとの新生活」
by
Sugiyama Yugo
PDF
第25回FA設備技術勉強会_自宅で勉強するROS・フィジカルAIアイテム.pdf
by
TomohiroKusu
PDF
PCCC25(設立25年記念PCクラスタシンポジウム):東京大学情報基盤センター テーマ1/2/3「Society5.0の実現を目指す『計算・データ・学習...
by
PC Cluster Consortium
PPTX
DrupalCon Nara 2025の記録 .
by
iPride Co., Ltd.
PDF
安価な ロジック・アナライザを アナライズ(?),Analyze report of some cheap logic analyzers
by
たけおか しょうぞう
基礎から学ぶ PostgreSQL の性能監視 (PostgreSQL Conference Japan 2025 発表資料)
by
NTT DATA Technology & Innovation
visionOS TC「新しいマイホームで過ごすApple Vision Proとの新生活」
by
Sugiyama Yugo
第25回FA設備技術勉強会_自宅で勉強するROS・フィジカルAIアイテム.pdf
by
TomohiroKusu
PCCC25(設立25年記念PCクラスタシンポジウム):東京大学情報基盤センター テーマ1/2/3「Society5.0の実現を目指す『計算・データ・学習...
by
PC Cluster Consortium
DrupalCon Nara 2025の記録 .
by
iPride Co., Ltd.
安価な ロジック・アナライザを アナライズ(?),Analyze report of some cheap logic analyzers
by
たけおか しょうぞう
CoreData 非同期データ処理
2.
永島 次朗 /
Jiro Nagashima Twitter @hedjirog nana music, inc. / iOS Engineer http://nana-music.com
3.
Goal UI操作を妨害することなく 高度なデータ処理をしたい
4.
Goal
UI操作を妨害することなく 高度なデータ処理をしたい 解決策 • CoreDataをマルチスレッドで扱う手法が有効 • 複数のContext • parentContext(iOS5 以上) • performBlock: メソッド(iOS5 以上)
5.
Agenda • CoreDataフレームワークの概要 • CoreDataとマルチスレッド
• 単一/複数Contextによる設計 • CoreDataの便利機能 • parentContext(iOS5 以上) • performBlock: メソッド(iOS5 以上)
6.
CoreDataフレームワークの概要
7.
Demo
8.
CoreDataフレームワークの概要 • 4つのクラスとクラス間の関係 ManagedObject
ManagedObject ManagedObject ManagedObjectContext PersistentStoreCoordinator FetchedResultsController
9.
CoreDataフレームワークの概要 ManagedObject • データを表わすオブジェクト
10.
CoreDataフレームワークの概要 ManagedObject ManagedObject
ManagedObject ManagedObjectContext • オブジェクトの集合を管理 • オブジェクトの挿入/更新/削除
11.
CoreDataフレームワークの概要 ManagedObject ManagedObject
ManagedObject PersistentStore ManagedObjectContext PersistentStoreCoordinator • オブジェクトの永続化 • 永続ストアへマッピング
12.
CoreDataフレームワークの概要 ManagedObject ManagedObject
ManagedObject ManagedObjectContext PersistentStoreCoordinator TableView FetchedResultsController • オブジェクトの変更を監視 • TableViewの表示と整合性を保つ
13.
CoreDataとマルチスレッド
14.
単一Contextによる設計 • 新規オブジェクト追加時
ManagedObject ManagedObjectContext PersistentStoreCoordinator 通知のタイミング 1. 空のオブジェクト追加時 FetchedResultsController 2. オブジェクト更新時 問題点 • 過剰な通知 • オブジェクトの更新後のみ通知したい
15.
単一Contextによる設計 •
オブジェクト永続化時 2. 永続化の ManagedObject 所要時間が増加 ManagedObjectContext PersistentStoreCoordinator 1. 負荷の高い更新処理 FetchedResultsController 問題点 • 永続化に処理時間を要するとUI操作を妨害
16.
単一Contextによる設計 •
過度な通知が発生する可能性 • 永続化時に処理時間を要してUIを妨害する可能性 複数のContextを作成
17.
複数Contextによる設計 Main Thread
ManagedObject ManagedObjectContext PersistentStoreCoordinator Background FetchedResultsController ManagedObject ManagedObjectContext • スレッド毎にContextを作成 • メインスレッド:監視対象、永続化向け • バックグラウンド:(オブジェクトの)更新向け
18.
複数Contextによる設計
Main Thread ManagedObject ManagedObjectContext PersistentStoreCoordinator オブジェクト更新後にマージ Background 適切なタイミングで通知 FetchedResultsController ManagedObject ManagedObjectContext • 適切なタイミングで通知が可能 • Context(スレッド)毎に役割分担 • 処理負荷の分散
19.
CoreDataの便利機能 • parentContext(iOS5 以上)
• Context間での更新内容のマージが容易に • performBlock: メソッド(iOS5 以上) • 非同期処理の記述が容易に
20.
parentContext Main Thread
ManagedObjectContext 親Context PersistentStoreCoordinator Parent 子Context Background FetchedResultsController ManagedObjectContext • 複数のContext間で親子関係を定義できる • setParentContext: メソッドで親Contextを指定
21.
parentContext
Main Thread ManagedObjectContext 親Context PersistentStoreCoordinator Parent オブジェクト更新後にマージ 子Context Background FetchedResultsController ManagedObjectContext • Context間での更新内容のマージが容易に • 子Contextのsave: メソッド呼び出しでマージ
22.
parentContext • 親Contextの作成
Main Thread ManagedObjectContext 親Context Contextの更新処理を行なうスレッドが決定 NSMangedObjectContext *parentContext; parentContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; [parentContext setPersistentStoreCoordinator:_persistentStoreCoordinator];
23.
parentContext • 子Contextの作成
Main Thread Background Parent ManagedObjectContext ManagedObjectContext 親Context 子Context Contextの更新処理を行なうスレッドが決定 NSMangedObjectContext *childContext; childContex = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; [childContext setParentContext:parentContext]; 親Contextの指定
24.
performBlock: •
非同期処理の記述が容易に Main Thread Background Parent ManagedObjectContext ManagedObjectContext 親Context 子Context [childContext performBlock:^{ 非同期で処理が実行される // push to parent NSError *error; if (![childContext save:&error]) { // handle error } [parentContext performBlock:^{ 非同期で処理が実行される NSError *error; if (![parentContext save:&error]) { // handle error } }]; }];
25.
performBlock: •
parentContextとの組み合わせ Main Thread Background Parent ManagedObjectContext ManagedObjectContext 親Context 子Context [childContext performBlock:^{ // push to parent NSError *error; if (![childContext save:&error]) { // handle error } 親Contextへ変更内容をマージ [parentContext performBlock:^{ NSError *error; if (![parentContext save:&error]) { // handle error } }]; }];
26.
performBlock: •
parentContextとの組み合わせ Main Thread Background Parent ManagedObjectContext ManagedObjectContext 親Context 子Context [childContext performBlock:^{ // push to parent NSError *error; if (![childContext save:&error]) { // handle error } [parentContext performBlock:^{ NSError *error; if (![parentContext save:&error]) { // handle error } 親Contextの永続化 }]; }];
27.
まとめ • UI操作を妨害しない高度なデータ処理 • CoreDataをマルチスレッドで利用する
• 複数のContextを用意 • parentContext で親子関係を定義 • performBlock: メソッドで非同期処理
28.
参考資料 • Multi-Context CoreData
http://www.cocoanetics.com/2012/07/multi-context-coredata/
29.
より詳しい情報 •
WWDC 2011 • Session 303 - What's New in Core Data on iOS • Session 315 - What's New in Core Data on Mac OS X • WWDC 2012 • Session 214 - Core Data Best Practices
Download