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
Yoichiro Sakurai
764 views
20120422i phonedeveloperworkshoppublished
Read more
2
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 22
2
/ 22
3
/ 22
4
/ 22
5
/ 22
6
/ 22
7
/ 22
8
/ 22
9
/ 22
10
/ 22
11
/ 22
12
/ 22
13
/ 22
14
/ 22
15
/ 22
16
/ 22
17
/ 22
18
/ 22
19
/ 22
20
/ 22
21
/ 22
22
/ 22
More Related Content
PDF
Cocoa勉強会#43-Blocksを使う
by
Masayuki Nii
PPTX
Linqことはじめ
by
Shoichi Yasui
PPTX
RubyとJavaScriptに見る第一級関数
by
Altech Takeno
PPTX
Jsonp
by
Kiminari Homma
PDF
JavaScript 勉強会 ― 変数・演算子・文
by
Appresso Engineering Team
PDF
並行プログラミングと継続モナド
by
Kousuke Ruichi
PDF
templateとautoの型推論
by
MITSUNARI Shigeo
KEY
Clojure programming-chapter-2
by
Masao Kato
Cocoa勉強会#43-Blocksを使う
by
Masayuki Nii
Linqことはじめ
by
Shoichi Yasui
RubyとJavaScriptに見る第一級関数
by
Altech Takeno
Jsonp
by
Kiminari Homma
JavaScript 勉強会 ― 変数・演算子・文
by
Appresso Engineering Team
並行プログラミングと継続モナド
by
Kousuke Ruichi
templateとautoの型推論
by
MITSUNARI Shigeo
Clojure programming-chapter-2
by
Masao Kato
What's hot
PPT
値渡しと参照渡しの比較
by
kitoku_magic
PDF
すごいConstたのしく使おう!
by
Akihiro Nishimura
PDF
クロージャデザインパターン
by
Moriharu Ohzu
PDF
Emcjp item21
by
MITSUNARI Shigeo
PDF
JavaScript 講習会 #1
by
Susisu
PDF
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
by
株式会社ランチェスター
PDF
emc++ chapter32
by
Tatsuki SHIMIZU
PDF
Java オブジェクトの内部構造
by
Taku Miyakawa
PPTX
Effective modern C++ 勉強会 #3 Item 12
by
Keisuke Fukuda
PDF
Knct-SG #1 Parser入門
by
y1r96 Ueno
PDF
C++0x 言語の未来を語る
by
Akira Takahashi
PDF
エキ Py 読書会02 2章後半
by
Tetsuya Morimoto
PPTX
競技プログラミングのためのC++入門
by
natrium11321
PDF
Php5.4
by
ke-m kamekoopa
PDF
Effective Modern C++ 勉強会#1 Item3,4
by
Takashi Hoshino
PPTX
Enshu8
by
sudahiroshi
PDF
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
by
Shintarou Okada
PDF
C++ lecture-2
by
sunaemon
PDF
Emcpp item31
by
mitsutaka_takeda
PDF
Swift らしい表現を目指そう #eventdots
by
Tomohiro Kumagai
値渡しと参照渡しの比較
by
kitoku_magic
すごいConstたのしく使おう!
by
Akihiro Nishimura
クロージャデザインパターン
by
Moriharu Ohzu
Emcjp item21
by
MITSUNARI Shigeo
JavaScript 講習会 #1
by
Susisu
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
by
株式会社ランチェスター
emc++ chapter32
by
Tatsuki SHIMIZU
Java オブジェクトの内部構造
by
Taku Miyakawa
Effective modern C++ 勉強会 #3 Item 12
by
Keisuke Fukuda
Knct-SG #1 Parser入門
by
y1r96 Ueno
C++0x 言語の未来を語る
by
Akira Takahashi
エキ Py 読書会02 2章後半
by
Tetsuya Morimoto
競技プログラミングのためのC++入門
by
natrium11321
Php5.4
by
ke-m kamekoopa
Effective Modern C++ 勉強会#1 Item3,4
by
Takashi Hoshino
Enshu8
by
sudahiroshi
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
by
Shintarou Okada
C++ lecture-2
by
sunaemon
Emcpp item31
by
mitsutaka_takeda
Swift らしい表現を目指そう #eventdots
by
Tomohiro Kumagai
Viewers also liked
PDF
20111030i phonedeveloperworkshoppublished
by
Yoichiro Sakurai
PDF
20120219i phonedeveloperworkshoppublished
by
Yoichiro Sakurai
KEY
20120826i phonedeveloperworkshop
by
Yoichiro Sakurai
PDF
20120616i phonedeveloperworkshop
by
Yoichiro Sakurai
PDF
CoreDataをバックグラウンドで扱うためのTips
by
Yohei Yamaguchi
PDF
XcodeのTargetについてのTIPS
by
Yoichiro Sakurai
PDF
CoreData 非同期データ処理
by
次朗 永島
PDF
javascript を Xcode でテスト
by
Yoichiro Sakurai
20111030i phonedeveloperworkshoppublished
by
Yoichiro Sakurai
20120219i phonedeveloperworkshoppublished
by
Yoichiro Sakurai
20120826i phonedeveloperworkshop
by
Yoichiro Sakurai
20120616i phonedeveloperworkshop
by
Yoichiro Sakurai
CoreDataをバックグラウンドで扱うためのTips
by
Yohei Yamaguchi
XcodeのTargetについてのTIPS
by
Yoichiro Sakurai
CoreData 非同期データ処理
by
次朗 永島
javascript を Xcode でテスト
by
Yoichiro Sakurai
Similar to 20120422i phonedeveloperworkshoppublished
PDF
Objectie-C de ラムダ
by
Akihiko Matuura
KEY
Objc lambda
by
matuura_core
KEY
Blocksの活用法
by
Hidetoshi Mori
PDF
iPhone, iPad アプリ開発勉強会#3
by
Hiroe Orz
PDF
Processing
by
Akifumi Nambu
PDF
Processing授業テキスト
by
Suzuki Junko
PDF
Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス
by
Naoyuki Kataoka
PDF
Pfi Seminar 2010 1 7
by
Preferred Networks
PDF
Rubyの御先祖CLUのお話(原本)
by
洋史 東平
PPTX
C言語 学習教材
by
Jun MITANI
PDF
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
by
和弘 井之上
Objectie-C de ラムダ
by
Akihiko Matuura
Objc lambda
by
matuura_core
Blocksの活用法
by
Hidetoshi Mori
iPhone, iPad アプリ開発勉強会#3
by
Hiroe Orz
Processing
by
Akifumi Nambu
Processing授業テキスト
by
Suzuki Junko
Objective-CのBlocksの循環参照に関する僕なりのベストプラクティス
by
Naoyuki Kataoka
Pfi Seminar 2010 1 7
by
Preferred Networks
Rubyの御先祖CLUのお話(原本)
by
洋史 東平
C言語 学習教材
by
Jun MITANI
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第5回 ‟配列と構造体„
by
和弘 井之上
More from Yoichiro Sakurai
PDF
Objective-C/Swift コードの共用
by
Yoichiro Sakurai
PDF
Xcode で gulp を使うお話
by
Yoichiro Sakurai
PDF
開発を加速させるRetty式チーム開発術 Reloaded
by
Yoichiro Sakurai
PDF
チームを加速させるRetty式開発術
by
Yoichiro Sakurai
PDF
1人でも頑張れる!Retty式開発環境
by
Yoichiro Sakurai
PDF
NSInvocationの便利さとハマりどころ
by
Yoichiro Sakurai
PDF
Google admobmediationで広告最適化
by
Yoichiro Sakurai
PDF
Crashlyticsでクラッシュ撲滅作戦
by
Yoichiro Sakurai
PDF
TestFlight自動化でらくらくチームテスト
by
Yoichiro Sakurai
PDF
20130216 workshop
by
Yoichiro Sakurai
KEY
20121028i phonedeveloperworkshop
by
Yoichiro Sakurai
KEY
20120413 nestakabaneworkshop
by
Yoichiro Sakurai
PDF
20120316 designerworkshoppublished
by
Yoichiro Sakurai
KEY
20110424i phonedeveloperworkshoppublish
by
Yoichiro Sakurai
Objective-C/Swift コードの共用
by
Yoichiro Sakurai
Xcode で gulp を使うお話
by
Yoichiro Sakurai
開発を加速させるRetty式チーム開発術 Reloaded
by
Yoichiro Sakurai
チームを加速させるRetty式開発術
by
Yoichiro Sakurai
1人でも頑張れる!Retty式開発環境
by
Yoichiro Sakurai
NSInvocationの便利さとハマりどころ
by
Yoichiro Sakurai
Google admobmediationで広告最適化
by
Yoichiro Sakurai
Crashlyticsでクラッシュ撲滅作戦
by
Yoichiro Sakurai
TestFlight自動化でらくらくチームテスト
by
Yoichiro Sakurai
20130216 workshop
by
Yoichiro Sakurai
20121028i phonedeveloperworkshop
by
Yoichiro Sakurai
20120413 nestakabaneworkshop
by
Yoichiro Sakurai
20120316 designerworkshoppublished
by
Yoichiro Sakurai
20110424i phonedeveloperworkshoppublish
by
Yoichiro Sakurai
20120422i phonedeveloperworkshoppublished
1.
「エキスパートObjective-C プ ログラミング」で始める
Blocks入門 朔 洋一郎 (@saku2saku)
2.
Blocksとは? BlocksとはiOS 4から利用できるようになったC言 語に対する拡張機能です 自動変数(ローカル変数)の値を伴った無名関数 無名関数とは? その名のとおり名前を持たない関数
JavaのEventListenerやjQueryのコールバック関 数などを使っている人であれば分かり易いかも
3.
無名関数のJQuery例
$.ajax({ type: "POST", url: "some.php", data: "name=John&location=Boston", success: function(msg){ alert( "Data Saved: " + msg ); } }); 上記はJQueryでsome.phpに対して、POSTリクエストを 送った際に成功した場合のコールバック定義の例です
4.
Blocksの構文 ^<戻り値の型>(<引数のリスト>) {式};
5.
Blocksの構文 返り値や引数リストが無い場合には省略可能です
^void (int tmp) { NSLog(@"blocks test %d", tmp); } または ^ (int tmp) { NSLog(@"blocks test %d", tmp); }
6.
Blocksの構文 返り値や引数リストが無い場合には省略可能です
^int (void) { return 2; } または ^int { return 2; }
7.
Blocksの構文 返り値や引数リストが無い場合には省略可能です
^void (void) { NSLog(@”blocks test”); } または ^{ NSLog(@”blocks test”); }
8.
Blocks変数 Blocksは関数ポインタのように変数に代入すること も可能になります <戻り値の型>(^<Blocks変数名>)(<引数リスト>);
9.
Blocks変数 int型の変数を返し、int型の引数を一個取るBlocks 変数blkを定義する場合 int (^blk) (int)
= ^int (int count) { return count +2; }; // 呼び出し方 blk(3);
10.
Blocks変数 typedefを使ってBlocks変数の型を定義することも 可能です typedef
<戻り値の型>(^<Blocks変数名>)(<引数リスト>);
11.
Blocks変数 typedefを使った例 typedef void (^completeBlock_t)(NSData
*data); completeBlock_t block_ = ^(NSData *data) { //hogehoge; };
12.
Blocksって使えるの? これだけではわかりにくいですが使えます! どういう面で使えるのかよくわからないけど? 処理が分散しない
デリゲートもいいけど、別メソッドで実装する 必要があるため、処理の記述場所が分散する GCDのコードを書く際に必要 Grand Central Dispatch(GCD)というマルチ スレッド処理の仕組みを使う際に使用
13.
オマケ:GCDって? GCDはマルチスレッドプログラミングを抽象的に実 装するための仕組み 今回は特に触れませんが、本サンプルの参考書籍 「エキスパートObjective-Cプログラミング」に詳 しく説明されています 例えば、画像の非同期通信での描画などに役立ち ます
14.
サンプルコード http://workshop.iphonework.biz/files/2012/05/
BlocksSample.zip
15.
TIPS
16.
TIPS 自動変数のキャプチャ 自動変数の代入 自動変数の参照型の扱い
17.
自動変数のキャプチャ int型のプリミティブ型はBlocksが定義された時点の 値としてコピーされる
int main() { int val = 10; const char *fmt = "val = %dn"; void (^blk)(void) = ^ { printf(fmt, val) }; val= 2; fmt = "These valudes were changed. val = %dn"; blk(); return 0; } 結果は val = 2と表示される
18.
自動変数への代入 自動変数のキャプチャは先程のとおり、Blocks構文 が出現した段階でとられます そこにBlocks内で値を上書きすることは基本的には できません(以下はエラーになる)
int main() { int val = 20; void (^blk)(void) = ^ { val = 2}; blk(); printf("val = %dn", val); return 0; }
19.
自動変数への代入 それでも値の変更をしたい場合には 「__block」指定子を使う必要があります _は2つ重ねています 以下の場合はOK
int main() { __block int val = 20; void (^blk)(void) = ^ { val = 2}; blk(); printf("val = %dn", val); return 0; }
20.
自動変数の参照型の扱い 参照型はプリミティブ型(int, float, etc)でないク ラスを持つような型を指します(NSObject,
etc) 参照型の場合には変数にはそのポインタが入ります が、これに足してもBlocksの中で代入はできません int main() { NSMutableArray *array = [[NSMutableArray alloc] init]; void (^blk)(void) = ^ { array = [[NSMutableArray alloc] init]; }; blk(); return 0; }
21.
自動変数の参照型の扱い 参照型の場合は代入はできませんが、その変数の持 つメソッドを呼んで、内部状態が変更になるのはOK です
int main() { NSMutableArray *array = [[NSMutableArray alloc] init]; void (^blk)(void) = ^ { NSObject *obj = [[NSObject alloc] init]; array = [array addObject: obj]; }; blk(); return 0; }
22.
ご清聴 ありがとうございました
Editor's Notes
#2
\n
#3
\n
#4
\n
#5
\n
#6
\n
#7
\n
#8
\n
#9
\n
#10
\n
#11
\n
#12
\n
#13
\n
#14
\n
#15
\n
#16
\n
#17
\n
#18
\n
#19
\n
#20
\n
#21
\n
#22
\n
#23
\n
Download