Development Primitives for iOS - Huber Flores
Transcript of Development Primitives for iOS - Huber Flores
![Page 1: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/1.jpg)
MTAT.03.262 Mobile Application Development
Development Primitives for iOS
Huber Flores [email protected]
Tartu, Estonia, 2013 1
![Page 2: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/2.jpg)
Outline
• Background
• iOS platform
– Requirements
– Technological specifications
• (architecture, programing models, etc.)
• Demo
Huber Flores 2
![Page 3: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/3.jpg)
BACKGROUND
Huber Flores 3
![Page 4: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/4.jpg)
What is iOS?
• Apple’s OS for iPhone – Launched 2007
– Core applications and services
• Direct manipulation concept – Multi-touch gestures (swipe, tap, pinch, and
reverse pinch)
• Application model based on online store (App store)
• Integration with iCloud (e.g. Siri, iTunes)
Huber Flores 4
![Page 5: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/5.jpg)
iOS Architecture
Huber Flores
Physical layer
- Sensors Proximity, accelerometer, gyroscope, etc.
- Display
- CPU, memory, processors
- Network communication
- Battery
and so on… 5
![Page 6: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/6.jpg)
iOS Architecture
Huber Flores
Core OS
- OS X Kernel
- Sockets
- Security
- Bonjour
- Certifications
- Power management
- BSD
6
![Page 7: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/7.jpg)
iOS Architecture
Huber Flores
Core services
- Collections
- Address book
- Core location
- Threading
- SQLite
- Networking
- File access
- URL utilities 7
![Page 8: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/8.jpg)
iOS Architecture
Huber Flores
Media
- Core audio
- Open AL
- Audio mixing
- Audio recording
- Video playback
- Core animation
- OpenGL ES
8
![Page 9: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/9.jpg)
iOS Architecture
Huber Flores
Cocoa touch
- UIKit
- Foundation framework
9
![Page 10: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/10.jpg)
iOS Architecture
Huber Flores
iCloud
- SyncML iTunes, etc.
- Web services
10
![Page 11: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/11.jpg)
DEVELOPMENT PRIMITIVES
Huber Flores 11
![Page 12: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/12.jpg)
Getting Acquaintance
• Mac OS X
• iPhone
• Apple developer ID
– Commercialization, service integration (e.g. Apple store, APNS)
• Xcode SDK
– Objective-C
Huber Flores 12
![Page 13: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/13.jpg)
Xcode
• IDE for iOS development
– Design
– Implementation
– Execution (e.g. Device simulator)
– Debug
– Source code managment
– Documentation
Huber Flores 13
![Page 14: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/14.jpg)
Xcode
Huber Flores 14
![Page 15: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/15.jpg)
Xcode
Huber Flores 15
![Page 16: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/16.jpg)
What is Objective-C
• ANSI C (superset)
• Enriches the language with OO capabilities
and more… (Dynamic binding and typing, etc.)
• GNU C
– Compiles both (C and Objective-C)
Huber Flores 16
![Page 17: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/17.jpg)
Objective-C
• Objective-C
– iPhone
– Mac
• Java
– Almost everywhere… (with some tricks)
Huber Flores 17
![Page 18: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/18.jpg)
Objective-C
• Message syntax
– Java:
myString.toString();
– Objective-C:
[myString description]
Huber Flores 18
![Page 19: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/19.jpg)
Objective-C
• Method arguments
– Java:
Person.setFirstName("Raul");
– Objective-C:
[Person setFirstName:@"Raul"];
Huber Flores 19
![Page 20: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/20.jpg)
Objective-C
• Object data types
– Java:
Person id = new Person();
– Objective-C:
Person *id = [[Person alloc] init];
Objetive-C also offers generic object type declaration
Huber Flores 20
![Page 21: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/21.jpg)
Objective-C
• Libraries, packages and namespaces
– Java:
java.lang.String gender = new String("Male");
– Objective-C:
NSString *gender = [[NSString alloc]
initWithString:"Male"];
Huber Flores 21
![Page 22: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/22.jpg)
Objective-C
• Methods – Java: public void setName(String firstName, String surName){…
– Objective-C: - (void) setName:(NSString *)firstName
lastName:(NSString *)surName
Call:
setName:lastName
Huber Flores 22
![Page 23: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/23.jpg)
Objective-C
• Classes – Declared in .h file
– Implemented in .m file
• Compiler directives – @interface…. @end
– @implementation … @end
• Braces scope – Instance variable section inside curly braces
– Method defined outside curly braces
Huber Flores 23
![Page 24: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/24.jpg)
Objective-C
• Class (Java)
Huber Flores 24
![Page 25: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/25.jpg)
Objective-C
• Class
(declaration)
Huber Flores 25
![Page 26: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/26.jpg)
Objective-C
• Class
(implementation)
Huber Flores 26
![Page 27: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/27.jpg)
Basic Development Primitives
• Action
• Outlet
• Object binding
Huber Flores 27
![Page 29: Development Primitives for iOS - Huber Flores](https://reader033.fdocuments.in/reader033/viewer/2022052411/628ab666bea06f5a9b18d58a/html5/thumbnails/29.jpg)
QUESTIONS
Huber Flores 29