lecture 1 welcome to ios
TRANSCRIPT
![Page 1: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/1.jpg)
HIT3329 / HIT8329Creating Data Driven Mobile Applications
Lecture 1Welcome to iOS
Presented by Paul Chapman
Adjunct Lecturer F-ICTDirector, Long Weekend LLC
Swinburne University of Technology
![Page 2: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/2.jpg)
Before We Begin
Lectures & Labs12 x Tuesday Nights
Assignments8 x homework (2 x optional)
Portfolio AssessmentOnly for the brave
RulesNo Copy Paste Coding
RequirementsAccess to Intel MacOO Programming Experience
Textshttp://developer.apple.comhttp://www.cocoadev.com
Q&Ahttp://stackoverflow.compaul at longweekendmobile .com
Swinburne University of Technology
![Page 3: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/3.jpg)
Learning Objectives
1. Build, test, and debug mobile applications that consume and process external data, as well as collect and publish data
2. Explain the importance of and design testable, reusable code components
3. Design mobile applications that work within device and environmental limitations
4. Use caching and concurrency to create fast applications with a better user experiences
Swinburne University of Technology
![Page 4: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/4.jpg)
What Can I Make?
Swinburne University of Technology
![Page 5: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/5.jpg)
Some of Our Work
www.longweekendmobile.com/apps
Japanese Flash Animal Phone
Swinburne University of Technology
![Page 6: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/6.jpg)
What's On For Today?
1.What This Course Is About2.The Learning Curve3.Objective-C4. iOS Developer Tools5.Your First App
Swinburne University of Technology
![Page 7: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/7.jpg)
1.0 What This Course Is About
●Writing apps●Data driven●Networked enabled●Sensor integrated●Touchable●On mobile devices
and it's about ...Swinburne University of Technology
![Page 8: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/8.jpg)
... making it cool!Swinburne University of Technology
![Page 9: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/9.jpg)
What's On For Today?
1.What This Course Is About2.The Learning Curve3.Objective-C4. iOS Developer Tools5.Your First App
Swinburne University of Technology
![Page 10: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/10.jpg)
2.0 The Learning Curve
● iPhone 2G released 2007● iPhone 3G released 2008● Long Weekend started 2009● New, New, New
○ Language○ Hardware○ Tools○ Distribution○ Design Rules
Swinburne University of Technology
![Page 11: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/11.jpg)
2.1 Unfamiliar Language
Message passing syntax object.childObject.value = 1; // Java [[object childObject] setValue:1]; // ObjC 1.0
however ...� object.childObject.value = 1; // ObjC 2.0
Manual memory management [object retain]; // Don't deallocate yet ... // Do some stuff [object release]; // I'm done
Swinburne University of Technology
![Page 12: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/12.jpg)
2.2 Different Hardware
It's not a PC!● Reduced resources (RAM, CPU)● Small screen● Touch interface
Swinburne University of Technology
![Page 13: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/13.jpg)
2.2 Different Hardware II
●Slow unreliable networks●The battery can run out●The phone can ring
Swinburne University of Technology
![Page 14: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/14.jpg)
2.3 The Apple App Store
Playing by the rules● Human Interface Guidelines● Review rules unpublished (until 2010)● Puzzling review process
Swinburne University of Technology
![Page 15: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/15.jpg)
2.3 The Apple App Store II
● Submission lead time (up to 2 weeks)● Bug fixes delayed (up to 2 weeks)● Developer backend is lacking● Even great apps get 1 star reviews
Swinburne University of Technology
![Page 16: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/16.jpg)
What's On For Today?
1.What This Course Is About2.The Learning Curve3.Objective-C4. iOS Developer Tools5.Your First App
Swinburne University of Technology
![Page 17: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/17.jpg)
3.0 Objective-C
●Built on top of C (strict superset)●Objective-C has a runtime●Message Passing●Compiler Directives
Swinburne University of Technology
![Page 18: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/18.jpg)
3.1 Superset of C
Compiler also supports C, C++, ObjC++
Swinburne University of Technology
![Page 19: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/19.jpg)
3.2 The Objective C Runtime
● Object oriented● Introspection● Dynamic typing● Rich Objects
○ Inherited from NSObject○ Feature filled
● Late Binding○ Method names are resolved at runtime○ Can Modify classes at runtime
Swinburne University of Technology
![Page 20: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/20.jpg)
3.4 Message Passing
● Methods are not 'called'● Messages are 'passed' to objects
eg: [object method:someObject];
● Method Signatures○ Most languages: method calls are matched by name○ ObjC: messages are matched by 'signature'
� This C method declaration: (void)doItNow(myString, myArray);
In ObjC: -(void)doItNow:(NSString*)stringArg withArray:(NSArray*):arrayArg;
Matches this signature: 'doItNow:withArray:'
Swinburne University of Technology
![Page 21: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/21.jpg)
3.5 Compiler Directives
● ObjC is built on top of C● Standard C syntax has been extended● Non- standard C syntax often look like this:
@implementation ... @end@interface ... @end@property@synthesize
● Some C syntax has also been "extended" for(id obj in myCollection) // ObjC for loop for(int i=0; i<=5; i++) // Standard C for loop
Swinburne University of Technology
![Page 22: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/22.jpg)
3.6 Source File Structure// example.h - Structure of class header file @interface Classname : SuperClassName { BOOL somethingHappened; // an instance variable int favoriteNumber; // another instance variable}+ (return_type)anotherClassMethod;- (return_type)anInstanceMethod:(param_type)myParam1 with:(param_type)myParam2;@end// example.m - Structure of class implementation file@implementation Classname
+ (return_type)anotherClassMethod { // ... }- (return_type)anInstanceMethod:(param_type)param1 with:(param_type)param2 { // ... }@end
Swinburne University of Technology
![Page 23: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/23.jpg)
What's On For Today?
1.What This Course Is About2.The Learning Curve3.Objective-C4. iOS Developer Tools5.Your First App
Swinburne University of Technology
![Page 24: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/24.jpg)
4.0 iOS Developer Tools
●Xcode 4● Interface Builder●Compiling & Debugging●Cocoa Touch Frameworks
Swinburne University of Technology
![Page 25: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/25.jpg)
4.1 Xcode 4
Class header & implementation files (.m and .h)Swinburne University of Technology
![Page 26: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/26.jpg)
4.2 Xcode 4 - Continued
● Everyone uses it (almost)● Free to download from ADC● Includes Interface Builder● More evolved than Eclipse+Android SDK● Less evolved than Visual Studio
Click through tour of Xcode 4
Swinburne University of Technology
![Page 27: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/27.jpg)
4.3 Interface Builder
User interface resource files (.xib and .nib)
screenshot here
Swinburne University of Technology
![Page 28: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/28.jpg)
4.4 Interface Builder - Continued
● IB creates user interface definitions● XIB/NIB files are class archives
○ a.k.a Frozen classes○ a.a.k.a Serialised classes
● Interfaces can be defined in code too :)● XIB file objects are "plugged in" to classes● IB provides a library of Cocoa interface objects
Click through tour of IBAcronym Alert!
★ NIB = NeXT Interface Builder★ XIB = Mac OS X Interface Builder
Swinburne University of Technology
![Page 29: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/29.jpg)
4.5 Other Tools
Debugging & Profiling ToolsSwinburne University of Technology
![Page 30: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/30.jpg)
4.6 iOS Simulator
Source: http://xcode4iphoneheavenorhell.wordpress.com/
Swinburne University of Technology
![Page 31: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/31.jpg)
4.7 Tethered Debugging
Source: Apple Inc
Swinburne University of Technology
![Page 32: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/32.jpg)
4.8 Version Control
Integrates with SVN + GiT client binaries
screenshot here
Swinburne University of Technology
![Page 33: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/33.jpg)
4.9 Cocoa Touch
"Cocoa Touch provides an abstraction layer of iOS ... Cocoa Touch is based on the Mac OS X Cocoa API toolset and, like it, is primarily written in the Objective-C language. Cocoa Touch allows the use of hardware and features that are not found in Mac OS X computers and are thus unique to the iOS range of devices."Quote Source: http://en.wikipedia.org/wiki/Cocoa_Touch
Cocoa Touch Framework*
FoundationInherited from OS X
Others: Game Kit, Map Kit, Address Book, Messaging, Core Location, Core Audio, Core Graphics, Core Animation, Core Data, etc...
UIKitUI Framework for iOS
* Not indicative of size or importance
Swinburne University of Technology
![Page 34: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/34.jpg)
4.10 Other Included Frameworks
Audio and Video☆ Core Audio ☆
OpenALMedia Library
AV Foundation
Graphics & Animation☆ Core Animation ☆
OpenGL ESQuartz 2D
User ApplicationsAddress Book
☆ Core Location ☆Map KitStore Kit
Data Management☆ Core Data ☆
SQLite
Networking & InternetBonjourWebKit
BSD Sockets
Swinburne University of Technology
![Page 35: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/35.jpg)
What's On For Today?
1.What This Course Is About2.The Learning Curve3.Objective-C4. iOS Developer Tools5.Your First App
Swinburne University of Technology
![Page 36: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/36.jpg)
5.0 Your First App
●Xcode Project Tree●Compiling, Running, Debugging
Swinburne University of Technology
![Page 37: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/37.jpg)
5.1 Xcode Project Tree
Classes*
Resources*�
XIB Files
Property Lists
Frameworks�
Products* Default group names, user changeable
Click through tour of Default Project TreeSwinburne University of Technology
![Page 38: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/38.jpg)
5.2 Compiling, Running, Debugging
● Adding & removing breakpoints● Stepping through code● Logging to console
1. NSLog(@"%@", myString);2. Format specifiers: %d %@ %f %U
● Debugging console commands1. print - prints a value2. po - prints objects (NSObjects)
Swinburne University of Technology
![Page 39: Lecture 1 Welcome to Ios](https://reader033.vdocuments.site/reader033/viewer/2022042814/54e922ac4a79594d398b4b2f/html5/thumbnails/39.jpg)
End of Lecture 1
1. Lab Work2. Assignments3. Dream of ObjC
Swinburne University of Technology