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 For Web Developers
Search
Addam Hardy
August 24, 2012
Programming
830
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Objective-C For Web Developers
Talk given at TechFest Northwest Arkansas 2012
Addam Hardy
August 24, 2012
More Decks by Addam Hardy
See All by Addam Hardy
Product Carousel Randomization & Optimization
addamh
0
38
A/B Testing
addamh
0
45
Kanban & Lean Manufacturing
addamh
0
100
What is caching? And why does it hate me?
addamh
0
41
Building Microservices on AWS with the Serverless Framework
addamh
0
130
Apache Spark & MLlib
addamh
0
120
Bayesian Sentiment Analysis with Ruby
addamh
0
170
Decision Trees, Data Science, and Machine Learning: Using Entropy to Discover Path to Purchase
addamh
1
230
Intro to Rails
addamh
0
150
Other Decks in Programming
See All in Programming
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
250
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
120
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
120
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
7
5k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
190
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
210
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
300
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
690
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
260
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
140
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
380
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
420
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
260
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Chasing Engaging Ingredients in Design
codingconduct
0
340
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
250
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
BBQ
matthewcrist
89
10k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Transcript
For Objective-C Web Developers Addam Hardy
@addamh this guy Ruby on Rails Javascript Developer iOS
None
web developer? it’s time to evolve
tablet sales to surpass desktop sales by 2015
demand supply
demand supply profit
None
the run down
strict superset of C Objective-C
strict superset of C compiled language Objective-C
strict superset of C compiled language object-oriented Objective-C
strict superset of C compiled language object-oriented dynamic Objective-C
strict superset of C compiled language object-oriented dynamic strictly typed
Objective-C
strict superset of C compiled language object-oriented dynamic strictly typed
smalltalk style messaging Objective-C
strict superset of C compiled language object-oriented dynamic strictly typed
smalltalk style messaging very verbose Objective-C
difficulties for web developers
C bummers
C compiling! so much time! bummers
C compiling! so much time! the dynamic-ness. sort of. bummers
C compiling! so much time! the dynamic-ness. sort of. asynchronous/threading
bummers
C compiling! so much time! the dynamic-ness. sort of. asynchronous/threading
memory management bummers
C compiling! so much time! the dynamic-ness. sort of. asynchronous/threading
memory management bummers
C compiling! so much time! the dynamic-ness. sort of. asynchronous/threading
memory management static typing bummers
C compiling! so much time! the dynamic-ness. sort of. asynchronous/threading
memory management static typing errors bummers
xcode
xcode
xcode
xcode
xcode
xcode
xcode
xcode
typing
typing Ruby PHP Objective-C $var = 21; $variable = “This
is a string”; var = 21 variable = “This is a string” (int) var = 21; NSString *variable = @“This is a string”;
typing C Primitives Common Classes char short long unsigned char
unsigned int int float double bool NSString NSNumber NSArray NSDictionary NSMutableArray NSMutableDictionary UIView UIButton id and 20,000 others..
header files implementation files wat?
headers / implementation class.h The public API for the class
@interface Student { NSNumber *age; NSString *name; } @end
headers / implementation class.h class.m The public API for the
class The instructions for the class @interface Student { NSNumber *age; NSString *name; } @end @implementation Student - (NSString *) name { } @end
creating classes
classes Ruby PHP class HelloWorld { // instance variables go
here // methods go here public function sayHI() { print("Hello World!”); } } class HelloWorld // instance variables go here // methods go here def sayHI puts "Hello World!” end end
classes Objective-C @interface HelloWorld { NSString *statement = @”This is
a string” } -(void) sayHI; @end
classes Ruby PHP class cat extends animal { public function
be_cute() { print("I am teh cute”); } } class cat < animal def be_cute puts "I am teh cute” end end
classes Objective-C @interface Cat : Animal <CuteMultipler> { } -(void)
beCute; @end
properties
properties @property (nonatomic, retain) NSString *title; @property (nonatomic, assign) int
number;
properties @synthesize title; @synthesize number; [object setTitle:@”This is my title”];
NSLog(@”%@”, [object title]);
object instantiation
object instantiation Ruby PHP include_once('HelloWorld.class.php'); $hw = new HelloWorld; $hw->sayHI;
require ‘HelloWorld’ hw = HelloWorld.new hw.sayHI
Objective-C #import <Foundation/Foundation.h> @interface HelloWorld : NSObject { } -
(void)sayHI; @end object instantiation header
Objective-C #import “HelloWorld.h” @implementation HelloWorld - (void)sayHI { NSLog(@”Hi.”); }
@end object instantiation header
Objective-C #import <Foundation/Foundation.h> #import "HelloWorld.h" int main (int argc, const
char * argv[]) { HelloWorld *hw = [[HelloWorld alloc] init]; [hw printHelloDate]; return 0; } object instantiation main.m
methods /selectors
methods / selectors Ruby PHP function buyItem(item) { $cart =
new ShoppingCart; $cart->purchase(item); } def buyItem(item) cart = ShoppingCart.new cart.purchase(item) end
Objective-C - (void)buyItem:(ItemObject*)item { ShoppingCart *cart = [[ShoppingCart alloc] init];
[cart purchase:item]; } methods / selectors
def addObserver(key_path, options, context) end methods / selectors
def addObserver(key_path, options, context) end methods / selectors addObserver(key_path, options,
context)
-(void) addObserverForKeyPath:(NSIndexPath*)indexPath WithOptions:(NSDictionary*)options AndContext:(void*) { } methods / selectors
-(void) addObserverForKeyPath:(NSIndexPath*)indexPath WithOptions:(NSDictionary*)options AndContext:(void*) { } methods / selectors [object
addObserverForKeyPath:indexPath WithOptions:options AndContext:nil]
common pitfalls
common pitfalls NSString *this = @”kitty”; NSString *that = @”kitty”;
if(this == that){ NSLog(@”This will not happen”); } if([this isEqualToString:that]){ NSLog(@”This will happen!”); } NO YES
common pitfalls @synthesize this; @synthesize that; @synthesize those; @synthesize this,
that, those; NO YES
common pitfalls @interface MyNewClass @end @interface MyNewClass : NSObject @end
NO YES
common pitfalls start writing implementation right away always declare methods
in header first then implement NO YES
just do it!
thanks!