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
佐藤 俊太郎
2,933 views
flasherがはじめてiOS開発をしてみて
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 68
2
/ 68
3
/ 68
4
/ 68
5
/ 68
6
/ 68
7
/ 68
8
/ 68
9
/ 68
10
/ 68
11
/ 68
12
/ 68
13
/ 68
14
/ 68
15
/ 68
16
/ 68
17
/ 68
18
/ 68
19
/ 68
20
/ 68
21
/ 68
22
/ 68
23
/ 68
24
/ 68
25
/ 68
26
/ 68
27
/ 68
28
/ 68
29
/ 68
30
/ 68
31
/ 68
32
/ 68
33
/ 68
34
/ 68
35
/ 68
36
/ 68
37
/ 68
38
/ 68
39
/ 68
40
/ 68
41
/ 68
42
/ 68
43
/ 68
44
/ 68
45
/ 68
46
/ 68
47
/ 68
48
/ 68
49
/ 68
50
/ 68
51
/ 68
52
/ 68
53
/ 68
54
/ 68
55
/ 68
56
/ 68
57
/ 68
58
/ 68
59
/ 68
60
/ 68
61
/ 68
62
/ 68
63
/ 68
64
/ 68
65
/ 68
66
/ 68
67
/ 68
68
/ 68
More Related Content
PDF
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
PDF
HTTP/2の現状とこれから
by
shigeki_ohtsu
PDF
HTTP/2 入門
by
Yahoo!デベロッパーネットワーク
PPTX
2012 05-19第44回cocoa勉強会発表資料
by
OCHI Shuji
KEY
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
by
Makoto Setoh
KEY
1.29.user,user,user
by
Tonny Xu
PDF
DevLOVE iPhoneアプリ勉強会
by
Toshimitsu Takahashi
PPTX
Doom3 commentary
by
DADA246
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
HTTP/2の現状とこれから
by
shigeki_ohtsu
HTTP/2 入門
by
Yahoo!デベロッパーネットワーク
2012 05-19第44回cocoa勉強会発表資料
by
OCHI Shuji
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
by
Makoto Setoh
1.29.user,user,user
by
Tonny Xu
DevLOVE iPhoneアプリ勉強会
by
Toshimitsu Takahashi
Doom3 commentary
by
DADA246
Similar to flasherがはじめてiOS開発をしてみて
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
PDF
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
by
幸雄 村上
PPTX
C#の書き方
by
信之 岩永
PDF
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
PDF
iPhoneとAndroidのアプリ開発最新潮流
by
Rakuten Group, Inc.
KEY
Ll xcode
by
Net Kanayan
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
by
聡 中川
PPT
Core Animation 使って見た
by
OCHI Shuji
PDF
既存アプリのiOS8対応 #ios8yahoo
by
Yahoo!デベロッパーネットワーク
PPTX
C#の書き方
by
信之 岩永
PDF
Cocoa Pro5
by
hasegawa
PDF
Storyboard
by
Hidetoshi Mori
PDF
iPhone develop for Beginner
by
Sachiko Kajishima
PDF
Amazon Web Servicesブース:UI×API×AWS 横田 聡
by
クラスメソッド株式会社
PPTX
最近のiOS開発の現状と実状
by
クラスメソッド株式会社
PDF
iPhone アプリ開発の実例
by
Tokyo City University, Ueno Lab.
PPT
iPhoneコンシェルジェアプリの紹介
by
Kato Shingo
PPT
iPhoneコンシェルジュアプリ
by
Kato Shingo
PDF
iPhone、Android両対応アプリ開発講座 概論
by
Takakuni Furukawa
PDF
Saitama beginner tips50
by
Tomohiko Okita
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
by
幸雄 村上
C#の書き方
by
信之 岩永
ドメイン駆動設計(DDD)の実践Part2
by
増田 亨
iPhoneとAndroidのアプリ開発最新潮流
by
Rakuten Group, Inc.
Ll xcode
by
Net Kanayan
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
by
聡 中川
Core Animation 使って見た
by
OCHI Shuji
既存アプリのiOS8対応 #ios8yahoo
by
Yahoo!デベロッパーネットワーク
C#の書き方
by
信之 岩永
Cocoa Pro5
by
hasegawa
Storyboard
by
Hidetoshi Mori
iPhone develop for Beginner
by
Sachiko Kajishima
Amazon Web Servicesブース:UI×API×AWS 横田 聡
by
クラスメソッド株式会社
最近のiOS開発の現状と実状
by
クラスメソッド株式会社
iPhone アプリ開発の実例
by
Tokyo City University, Ueno Lab.
iPhoneコンシェルジェアプリの紹介
by
Kato Shingo
iPhoneコンシェルジュアプリ
by
Kato Shingo
iPhone、Android両対応アプリ開発講座 概論
by
Takakuni Furukawa
Saitama beginner tips50
by
Tomohiko Okita
More from 佐藤 俊太郎
PDF
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
by
佐藤 俊太郎
PDF
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
by
佐藤 俊太郎
PDF
Source kittenについて
by
佐藤 俊太郎
PDF
`redux`と`flux`を比べてみたときの個人的な感想
by
佐藤 俊太郎
PDF
Createjsについて@jsCafe20
by
佐藤 俊太郎
PDF
iOSオジサンは JSオジサンを これからも覗きにくる
by
佐藤 俊太郎
KEY
Introduction for cocos2d
by
佐藤 俊太郎
PDF
Bond の v4 について
by
佐藤 俊太郎
PDF
小さな会社(チーム)で クールなアプリをつくる方法 Gunosy UI Design Study #1
by
佐藤 俊太郎
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
by
佐藤 俊太郎
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
by
佐藤 俊太郎
Source kittenについて
by
佐藤 俊太郎
`redux`と`flux`を比べてみたときの個人的な感想
by
佐藤 俊太郎
Createjsについて@jsCafe20
by
佐藤 俊太郎
iOSオジサンは JSオジサンを これからも覗きにくる
by
佐藤 俊太郎
Introduction for cocos2d
by
佐藤 俊太郎
Bond の v4 について
by
佐藤 俊太郎
小さな会社(チーム)で クールなアプリをつくる方法 Gunosy UI Design Study #1
by
佐藤 俊太郎
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
flasherがはじめてiOS開発をしてみて
1.
はじめてのiOS開発
2.
はじめてのiOS開発
iOS開発の醍醐味を flash開発してきた人間からの視点で 簡単にまとめました。
3.
はじめてのiOS開発 •
メモリ管理 • 画像キャッシュ • マルチスレッド処理 • iOSのバージョン、デバイスの違い
4.
メモリ管理
5.
メモリ管理 flash開発におけるメモリ管理は・・・
6.
メモリ管理 flash開発におけるメモリ管理は・・・
ガベージコレクション。
7.
メモリ管理 ガベージコレクション、つまり
使用しなくなったメモリを プログラム側が勝手に開放してくれる。 それによりメモリリークをふせぐ。
8.
メモリ管理 iOS開発におけるメモリ管理は・・・
9.
メモリ管理 iOS開発におけるメモリ管理は・・・ リファレンスカウントによるメモリ管理。
10.
メモリ管理 リファレンスカウントによるメモリ管理とは・・・
11.
メモリ管理 リファレンスカウントによるメモリ管理とは・・・
簡単にいうと、
12.
メモリ管理 リファレンスカウントによるメモリ管理とは・・・
簡単にいうと、 確保(alloc)したメモリは 必要がなくなったら解放(release)する
13.
メモリ管理 メモリの解放漏れがあると・・・
14.
メモリ管理 メモリの解放漏れがあると・・・ メモリリークが発生して・・・
15.
メモリ管理
メモリの解放漏れがあると・・・ メモリリークが発生して・・・ アプリケーションがクラッシュ(落ちる > < )
16.
メモリ管理 でも・・・
17.
メモリ管理 ARCを採用
18.
メモリ管理 ARCとは・・・
19.
メモリ管理
ARCとは・・・ コンパイラがメモリ管理を行ってくれる!!
20.
メモリ管理
つまり 確保(alloc)したメモリは 必要がなくなったら解放(release)する
21.
メモリ管理
つまり 確保(alloc)したメモリは 必要がなくなったら解放(release)する releaseを書く必要がなくなった!
22.
メモリ管理 これでメモリ管理については 気にしなくてよくなった!?
23.
メモリ管理
もちろん楽にはなったが、 全く気にしなくていいわけではない。。。
24.
メモリ管理 例1)テーブルビューセルの再利用
25.
メモリ管理 例1)テーブルビューセルの再利用
26.
メモリ管理
例1)テーブルビューの再利用 - (UnitTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UnitTableViewCell *cell = (UnitTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"UnitTableViewCell"]; if (cell == nil) { NSLog(@"cellを新規に生成"); UINib* nib = [UINib nibWithNibName:@"UnitTableViewCell" bundle:nil]; NSArray* array = [nib instantiateWithOwner:nil options:nil]; cell = [array objectAtIndex:0]; } [cell setData:[_dataList objectAtIndex:indexPath.row]]; return cell; }
27.
メモリ管理
例1)テーブルビューの再利用 - (UnitTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UnitTableViewCell *cell = (UnitTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"UnitTableViewCell"]; if (cell == nil) { NSLog(@"cellを新規に生成"); UINib* nib = [UINib nibWithNibName:@"UnitTableViewCell" bundle:nil]; NSArray* array = [nib instantiateWithOwner:nil options:nil]; cell = [array objectAtIndex:0]; } [cell setData:[_dataList objectAtIndex:indexPath.row]]; return cell; } セルがすでに生成されていれば、 セルはそのまま再利用して別のデータをセットしてあげる
28.
メモリ管理
例1)テーブルビューの再利用 - (UnitTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UnitTableViewCell *cell = (UnitTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"UnitTableViewCell"]; if (cell == nil) { NSLog(@"cellを新規に生成"); UINib* nib = [UINib nibWithNibName:@"UnitTableViewCell" bundle:nil]; NSArray* array = [nib instantiateWithOwner:nil options:nil]; cell = [array objectAtIndex:0]; } [cell setData:[_dataList objectAtIndex:indexPath.row]]; return cell; } _canvas = [[CanvasView alloc] initWithUnitData:data.unitData]; [self addSubview:_canvas];
29.
メモリ管理
例1)テーブルビューの再利用 - (UnitTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UnitTableViewCell *cell = (UnitTableViewCell*)[tableView dequeueReusableCellWithIdentifier:@"UnitTableViewCell"]; if (cell == nil) { NSLog(@"cellを新規に生成"); UINib* nib = [UINib nibWithNibName:@"UnitTableViewCell" bundle:nil]; NSArray* array = [nib instantiateWithOwner:nil options:nil]; cell = [array objectAtIndex:0]; } [cell setData:[_dataList objectAtIndex:indexPath.row]]; return cell; } _canvas = [[CanvasView alloc] initWithUnitData:data.unitData]; [self addSubview:_canvas]; このメソッド内でインスタンスを生成→メモリリーク!!
30.
画像キャッシュ
31.
画像キャッシュ
flash開発では サーバから取得する画像のファイルサイズは あまり気にしてこなかった
32.
画像キャッシュ iOS開発では
33.
画像キャッシュ
iOS開発では 3G回線における画像の読み込み時間は かなりクリティカル。
34.
画像キャッシュ 画像が表示されるのに時間がかかる、 こんなアプリやってられない!! ユーザが離れていく。。。
35.
画像キャッシュ より最適な画像キャッシュの機構をつくる
36.
画像キャッシュ サーバ
CDN ブラウザキャッシュ ユーザ flash開発
37.
画像キャッシュ サーバ
サーバ CDN ブラウザキャッシュ ユーザ ユーザ flash開発 iOS開発
38.
画像キャッシュ サーバ
サーバ CDN CDN ブラウザキャッシュ ユーザ ユーザ flash開発 iOS開発
39.
画像キャッシュ サーバ
サーバ CDN CDN ディスクキャッシュ ブラウザキャッシュ ユーザ ユーザ flash開発 iOS開発
40.
画像キャッシュ サーバ
サーバ CDN CDN ディスクキャッシュ ブラウザキャッシュ メモリキャッシュ ユーザ ユーザ flash開発 iOS開発
41.
画像キャッシュ サーバ
サーバ CDN CDN 通信発生 通信しない ディスクキャッシュ ブラウザキャッシュ メモリキャッシュ ユーザ ユーザ flash開発 iOS開発
42.
マルチスレッド処理
43.
マルチスレッド処理 flash(ActionScript3.0)開発は
シングルスレッド処理。
44.
マルチスレッド処理
iOS開発では マルチスレッドプログラミングが可能。
45.
マルチスレッド処理 マルチスレッドプログラミングって
必要なの??
46.
マルチスレッド処理
YES!
47.
マルチスレッド処理 描画やタッチイベント処理は メインスレッドで行われる。 そのため画像の読み込み処理などは
別スレッドで行う。
48.
マルチスレッド処理 これってどういうこと??
49.
マルチスレッド処理
画像を読み込みつつ、 スクロールの操作ができていることがわかる
50.
マルチスレッド処理 これってどういうこと??
51.
マルチスレッド処理 これってどういうこと?? → 快適なユーザビリティ
52.
マルチスレッド処理 どうやって書く??
53.
マルチスレッド処理
どうやって書く?? GCD(Grand Central Dispatch)
54.
マルチスレッド処理 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//ここに別スレッドの処理 dispatch_async(dispatch_get_main_queue(), ^{ //ここにメインスレッドの処理 }); });
55.
マルチスレッド処理 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//ここに別スレッドの処理 dispatch_async(dispatch_get_main_queue(), ^{ //ここにメインスレッドの処理 }); }); たったこれだけ。
56.
マルチスレッド処理 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//ここに別スレッドの処理 dispatch_async(dispatch_get_main_queue(), ^{ //ここにメインスレッドの処理 }); }); たったこれだけ。 でも・・・
57.
マルチスレッド処理 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//ここに別スレッドの処理 dispatch_async(dispatch_get_main_queue(), ^{ //ここにメインスレッドの処理 }); }); 書き方間違えるとダメー。
58.
マルチスレッド処理 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//ここに別スレッドの処理 dispatch_async(dispatch_get_main_queue(), ^{ //ここにメインスレッドの処理 }); }); 並列処理してはいけないものをここに書くと・・・ EXE_BAD_ACCESS(ヌルポ)でクラッシュ。。。
59.
マルチスレッド処理 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//ここに別スレッドの処理 dispatch_async(dispatch_get_main_queue(), ^{ //ここにメインスレッドの処理 }); }); こちらに描画の更新処理を書いてあげないと、、、 画面が一切更新されない!!
60.
iOSのバージョン、デバイスの違い
61.
iOSのバージョン、デバイスの違い •
iOS5.x. / 6.x. • 1,136 x 640 / 960 x 640 ピクセル解像度
62.
iOSのバージョン、デバイスの違い iOS5.x.
/ 6.x. による違い 一例
63.
iOSのバージョン、デバイスの違い
iOS5.x. / 6.x. による違い 一例 • “Auto Layout”機能 • SNS関連フレームワーク • shouldAutorotateToInterfaceOrientationがiOS6で deprecatedに
64.
iOSのバージョン、デバイスの違い 1,136 x 640
/ 960 x 640 ピクセル解像度による違い 一例
65.
iOSのバージョン、デバイスの違い 1,136 x 640
/ 960 x 640 ピクセル解像度による違い 一例 こういう対応したんだから そんな大変じゃないんじゃ ないの??
66.
iOSのバージョン、デバイスの違い 1,136 x 640
/ 960 x 640 ピクセル解像度による違い 一例
67.
iOSのバージョン、デバイスの違い 1,136 x 640
/ 960 x 640 ピクセル解像度による違い 一例
68.
ご清聴ありがとうございました。
Download