Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Objective-C Bootcamp
Search
Kazuki Sakamoto
July 19, 2012
Technology
2
66
Objective-C Bootcamp
Kazuki Sakamoto
July 19, 2012
Tweet
Share
Other Decks in Technology
See All in Technology
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
1
110
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
200
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
4.8k
月間数億レコードのアクセスログ基盤を無停止・低コストでAWS移行せよ!アプリケーションエンジニアのSREチャレンジ💪
miyamu
0
810
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.7k
データの整合性を保ちたいだけなんだ
shoheimitani
8
2.9k
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
4.9k
(金融庁共催)第4回金融データ活用チャレンジ勉強会資料
takumimukaiyama
0
130
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
120
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
How to build a perfect <img>
jonoalderson
1
4.9k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
From π to Pie charts
rasagy
0
120
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
120
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Mobile First: as difficult as doing things right
swwweet
225
10k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Transcript
Objective-C Bootcamp
“Objective-C!” “Objective-C!”
จ๏ (Syntax)
จ๏ (Syntax) •Cݴޠͱಉ͡
จ๏ (Syntax) •Cݴޠͱಉ͡
จ๏ (Syntax) •C / C++ ͱಉډՄೳ
จ๏ (Syntax) •C / C++ ͱಉډՄೳ •Ϋϥε •ϝιουݺͼग़͠
Ϋϥε
Ϋϥε class Foo { int bar; int add(int n) {
bar += n; return bar; } };
Ϋϥε C/C++ͱಉډՄೳ = C++ͱҟͳΔ
Ϋϥε @interface Foo @end
Ϋϥε @interface Foo { int bar; } @end
Ϋϥε @interface Foo { int bar; } - (int)add:(int)n; @end
Ϋϥε @interface Foo { int bar; } - (int)add:(int)n; +
(id)fooWithValue:(int)value; @end
Ϋϥε @implementation Foo @end
Ϋϥε @implementation Foo - (int)add:(int)n { bar += n; return
bar; } @end
ϝιουݺͼग़͠ $foo->add(5);
ϝιουݺͼग़͠ foo.add(5);
ϝιουݺͼग़͠ C/C++ͱಉډՄೳ = CͱҟͳΔ
ϝιουݺͼग़͠ [foo add:5];
ϝιουݺͼग़͠ [[[Foo alloc] init] add:5];
ϝιουݺͼग़͠ $foo = null; $foo->bar();
ϝιουݺͼग़͠ $foo = null; $foo->bar();
ϝιουݺͼग़͠ id foo = nil; [foo bar];
ϝιουݺͼग़͠ id foo = nil; [foo bar]; ʘ ฏؾ ʗ
ϝιουݺͼग़͠ [foo bar];
ϝιουݺͼग़͠ [foo bar]; objc_msgSend(foo, @selector(bar));
ϝιουݺͼग़͠ objc_msgSend Objective-C Message Send ϝοηʔδૹ৴
ϝοηʔδૹ৴ ϝιουݺͼग़͠ •ͲͷΦϒδΣΫτʹ •ͲΜͳϝοηʔδΛૹ͍͍ͬͯ
[duck quack]; [dog quack]; [cat performSelector: NSSelectorFromString(@”quack”)];
ϝοηʔδૹ৴ ϝιουݺͼग़͠ •ͲͷΦϒδΣΫτʹ •ͲΜͳϝοηʔδΛૹ͍͍ͬͯ ɹɹɹɹ Late binding
ϝοηʔδૹ৴ ϝιουݺͼग़͠ Duck Typing (Late binding) ΞώϧͷΑ͏ʹ໐͘ͷͳΒɺ ͦΕΞώϧͰ͋Δ
ϝοηʔδૹ৴ ϝιουݺͼग़͠ Duck Typing (Late binding) ΞώϧͷΑ͏ʹ໐͘ͷͳΒɺ ͦΕΞώϧͰ͋Δ
Objective-C • Early binding • Cؔݺग़ / C++ϝιουݺग़ • Late
binding • Objective-C ϝοηʔδૹ৴
Objective-C • Early binding • Cؔݺग़ / C++ϝιουݺग़ • ߴ
• Late binding • Objective-C ϝοηʔδૹ৴ •
Ϧςϥϧ
Ϧςϥϧ จࣈྻ @”Hello World”
Ϧςϥϧ ”Hello World” จࣈྻ @”Hello World” C / C++ ͱಉډՄೳ
Ϧςϥϧ จࣈྻ @”Hello World” [NSString stringWithUTF8String:”Hello World”]
Ϧςϥϧ @15
Ϧςϥϧ @15 [NSNumber numberWithInt:15]
Ϧςϥϧ ྻ @[a, b, c]
Ϧςϥϧ ྻ @[a, b, c] [NSArray arrayWithObjects:a, b, c, nil]
Ϧςϥϧ σΟΫγϣφϦ @{k1:v1, k2:v2, k3:v3}
Ϧςϥϧ σΟΫγϣφϦ @{k1:v1, k2:v2, k3:v3} NSDictionary
ϝϞϦཧ
ϝϞϦཧ ΦϒδΣΫτͷੜํ๏
ϝϞϦཧ NSString *string = [NSString stringWithFormat:@”Hello %d”, i];
ϝϞϦཧ NSObject *obj = [[NSObject alloc] init];
ϝϞϦཧ id obj = [[NSObject alloc] init];
ϝϞϦཧ ΦϒδΣΫτͷഁغํ๏
ϝϞϦཧ ͳ͠!
ϝϞϦཧ NSObject *obj = [[NSObject alloc] init]; obj = nil;
ϝϞϦཧ • ࢀরΧϯτํࣜ
None
None
None
None
None
None
None
None
None
ϝϞϦཧ • ࢀরΧϯτํࣜ • ੲखಈͰͬͯͨ NSObject *obj = [[NSObject alloc]
init]; [obj release];
ϝϞϦཧ • ࢀরΧϯτํࣜ • ੲखಈͰͬͯͨ • ࠓίϯύΠϥ͕ͬͯ͘ΕΔ! NSObject *obj =
[[NSObject alloc] init]; [obj release];
ϝϞϦཧ • ࢀরΧϯτํࣜ • ίϯύΠϥ͕ͬͯ͘ΕΔ • Automatic Reference Counting •
ུͯ͠ARC
ϝϞϦཧ GCͱҧ͏ͷ?
ϝϞϦཧ • GC • ͍Ζ͍Ζํࣜ͋Δ͕ɺ جຊతʹϥϯλΠϜίετ͕͔͔Δ • ࢀরΧϯτํࣜ • جຊతʹϥϯλΠϜίετ͔͔Βͳ͍
• ॥ࢀর
None
॥ࢀরճආํ๏
॥ࢀরճආํ๏ __weak
__weak id __weak obj = [[NSObject alloc] init];
__weak id __weak obj = [[NSObject alloc] init]; NSLog(@”obj =
%@”, obj);
__weak id __weak obj = [[NSObject alloc] init]; NSLog(@”obj =
%@”, obj); ݁Ռ: (null)
None
εϨου
εϨου Grand Central Dispatch Blocks
εϨου dispatch_queue_t q = dispatch_get_global_queue(0, 0); dispatch_async(q, ^{ ʘ εϨου
ʗ });
εϨου dispatch_queue_t q = dispatch_get_global_queue(0, 0); dispatch_async(q, ^{ ʘ εϨου
ʗ });
εϨου dispatch_queue_t q = dispatch_get_global_queue(0, 0); dispatch_async(q, ^{ ʘ εϨου
ʗ });
εϨου dispatch_async(q, ^{ εϨου্Ͱ࡞ۀ dispatch_async(dispatch_get_main_queue(),^{ ʘϝΠϯεϨουʗ }); });
εϨου • Grand Central Dispatch (GCD) • OS X kernelͷGCD༻εϨουΛ͏ͷ
Ͱܰྔ • API͕؆୯ • LinuxͰ͑ΔΑ!
εϨου • Blocks • lambda, closure • CoffeeScriptͳΒ ->, =>
• C#ͳΒ ()=> • PHP5.3Ҏ߱ function(){} • LinuxͰ͑ΔΑ!
None
“AndroidͰObjective-CͳΜ͡Όʔ!” “Objective-CͳΜ͡Όʔ!” ͓ΘΓ
ຊ