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 For Web Developers
Search
Addam Hardy
August 24, 2012
Programming
6
590
Objective-C For Web Developers
Talk given at TechFest Northwest Arkansas 2012
Addam Hardy
August 24, 2012
Tweet
Share
More Decks by Addam Hardy
See All by Addam Hardy
Product Carousel Randomization & Optimization
addamh
0
12
A/B Testing
addamh
0
10
Kanban & Lean Manufacturing
addamh
0
68
What is caching? And why does it hate me?
addamh
0
12
Building Microservices on AWS with the Serverless Framework
addamh
0
98
Apache Spark & MLlib
addamh
0
96
Bayesian Sentiment Analysis with Ruby
addamh
0
140
Decision Trees, Data Science, and Machine Learning: Using Entropy to Discover Path to Purchase
addamh
1
210
Intro to Rails
addamh
0
120
Other Decks in Programming
See All in Programming
Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition | AndroidMakers Paris
prof18
0
160
GitHub Copilotのススメ
marcy731
1
230
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
180
From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE
ivargrimstad
0
600
効率化に挑戦してみたらモバイル開発が少し快適になった話
ryunakayama
0
140
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
170
Going beyond Apache Parquet's default settings
xhochy
0
130
はてなにおける CSS Modules、及び CSS Modules に足りないもの / CSS Modules in Hatena, and CSS Modules missing parts
mizdra
7
980
検証も兼ねて個人開発でHonoとかと向き合った話
hanetsuki
1
1.3k
MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit
nekowen
1
200
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
490
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
680
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
Unsuck your backbone
ammeep
663
57k
Visualization
eitanlees
137
14k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
8
1.3k
Designing Experiences People Love
moore
136
23k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
The Language of Interfaces
destraynor
151
23k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Code Reviewing Like a Champion
maltzj
515
39k
Agile that works and the tools we love
rasmusluckow
325
20k
Automating Front-end Workflow
addyosmani
1357
200k
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!