Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Objective-C Bootcamp
Search
Kazuki Sakamoto
July 19, 2012
Technology
71
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Objective-C Bootcamp
Kazuki Sakamoto
July 19, 2012
Other Decks in Technology
See All in Technology
エンタメ企業のM&Aを支えるデータ基盤 ― 統合から店舗のリアルタイム分析まで / Data Engineering Summit 2026
genda
0
170
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
130
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
500
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
8
3.1k
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
160
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
100
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
Classmethod Company Deck
satoshi7
1
680
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
530
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Balancing Empowerment & Direction
lara
6
1.3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
550
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
370
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
The Cost Of JavaScript in 2023
addyosmani
55
10k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
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ͳΜ͡Όʔ!” ͓ΘΓ
ຊ