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
SwiftUIのGeometryReaderとScrollViewを基礎から応用まで学び直す:設計と活用事例
fumiyasac0921
0
150
Where will it converge?
ibknadedeji
0
190
いまさら聞けない ABテスト入門
skmr2348
1
210
GopherCon Tour 概略
logica0419
2
190
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
5.5k
社内お問い合わせBotの仕組みと学び
nish01
0
460
生成AIとM5Stack / M5 Japan Tour 2025 Autumn 東京
you
PRO
0
230
Trust as Infrastructure
bcantrill
0
350
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
350
ACA でMAGI システムを社内で展開しようとした話
mappie_kochi
1
290
AIが書いたコードをAIが検証する!自律的なモバイルアプリ開発の実現
henteko
1
350
許しとアジャイル
jnuank
1
130
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Gamification - CAS2011
davidbonilla
81
5.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Automating Front-end Workflow
addyosmani
1371
200k
4 Signs Your Business is Dying
shpigford
185
22k
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ͳΜ͡Όʔ!” ͓ΘΓ
ຊ