3. Agenda
• About the iPhone
• The problem: About the example application
• About the development environment
• Objective C
• Common API-s
• XML parsing API
• Core Location
62. • Small extention to ANSI C
• About ten new reserved words
• Syntactical changes influenced by SmallTalk
• Used primarily by Apple.
• OpenStep standard
• Dynamic typing
• “Explicit” memory management
66. Tricky stuff
Delegates
When you call a API class, you often send a reference to your self or some
other class which will recieve callbacks on certain events
Parameters
Almost named parameters, but the order is significant.
Memory allocation.
retain - instance counter++
release - instance counter --
[NSAutoreleasePool] - Inserted objects gets released
automaticlu
85. Core Location
Basestasjoner
Objective-C CLLocation
Wifi-hotspots
Class Manager
A-GPS
86. Core Location
Basestasjoner
Register the class
Objective-C CLLocation
Wifi-hotspots
Class Manager
A-GPS
87. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C CLLocation
Wifi-hotspots
Class Manager
A-GPS
88. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C CLLocation
Wifi-hotspots
Class Manager
A-GPS
89. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C New position found CLLocation
Wifi-hotspots
Class Manager
A-GPS
90. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C New position found CLLocation
Wifi-hotspots
Class Manager
A-GPS
91. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C New position found CLLocation
Wifi-hotspots
Class New position found Manager
A-GPS
92. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C New position found CLLocation
Wifi-hotspots
Class New position found Manager
A-GPS
93. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C New position found CLLocation
Wifi-hotspots
Class New position found Manager
New position found
A-GPS
94. Core Location
Basestasjoner
Register the class
Start positioning
Objective-C New position found CLLocation
Wifi-hotspots
Class New position found Manager
New position found
Stop positioning
A-GPS
119. • well...
?
• The phone is
amazing.
• Xcode is OK
120. • well...
?
• The phone is
amazing.
• Xcode is OK
• The politics are
mindboggeling
121. • well...
?
• The phone is
amazing.
• Xcode is OK
• The politics are
mindboggeling
• Look out for
Android
122.
123. News in iPhone 3.0
• peer-to-peer connections over Bonjour;
• an app interface for hardware accessories;
• access to the iPod music library;
• a new Maps API
• long-awaited push notification support.
• API for streaming audio and video directly over
HTTP
• control of the proximity sensor
• audio recording features
• a battery API
Splashscreen som er oppe mens vi venter på at alle setter seg ned.
Start opp firefox i bakgrunnen.
Skru av lyden og telefonen.
Det hær fåredraget handler om utvikling for iphone.
VI kommer innom en del ulike teknologier i løpet av de neste 40 minuttan.
På sluttn av foredraget har vi litt tid till spørsmål.
Litt om megselv.
Tobias K Torrissen
Jobbet med programmering og systemutvikling i 11 år,
Cand.Scient fra UIO
Kommer fra Oslo
CTO og konsulent
Jobbet mye med store mellomvaresystemer.
Here
Sold over 12 million devices world wide.
Second largest smartphone vendor in the world
7th largest phone vendor in the world
1 000 000 000 (billon) downloads from the appstore.
25 000 apps available throug appstore in 9 months.
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
top-of-the-line hjemmepc var for 7-8 år siden
Iphone sin skjerm er er ca 9 cm stor og har en oppløsning på 480x320 pixels
GPU:en trengs For å kunne støtte Open GL ES
Alt i alt: En kjempespennende maskin å jobbe med!!
appstore, en genial distribusjonsmekanisme for 3:e parts applikasjoner
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
This is me, when I
La oss se litt nærmere på appen. [kjør film]
Snakk deg gjennom applikasjonen. (Ikke fortell hvilke tjenester som blir brukt)
Før vi går konkret til verks er det greit å se hvilke delproblemer vi identifiserte. Hva var det vi måtte få på plass.
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Tobias:
Nå skal vi gå gjennom hvordan denne applikasjonen er bygget opp.
vi benytter oss av 2 velkjente webtjenester:
google maps som gir oss en adresse gitt en posisjon.
trafikanten ger oss ruta hjem og informasjon om når linjene går, (i realtid)
I tillegg bruke vi lokaliseringsfunktionen i iPhone for å få posisjonering (klikk)
noen av disse webtjenestene mangler gode programatiske API:er
VI bruker Yahoo pipes for å få ut dataen vi ønsker i XML format.
La oss gå litt nærmere in på hver enkelt komponent
vi benytter oss av 2 velkjente webtjenester:
google maps som gir oss en adresse gitt en posisjon.
trafikanten ger oss ruta hjem og informasjon om når linjene går, (i realtid)
I tillegg bruke vi lokaliseringsfunktionen i iPhone for å få posisjonering (klikk)
noen av disse webtjenestene mangler gode programatiske API:er
VI bruker Yahoo pipes for å få ut dataen vi ønsker i XML format.
La oss gå litt nærmere in på hver enkelt komponent
vi benytter oss av 2 velkjente webtjenester:
google maps som gir oss en adresse gitt en posisjon.
trafikanten ger oss ruta hjem og informasjon om når linjene går, (i realtid)
I tillegg bruke vi lokaliseringsfunktionen i iPhone for å få posisjonering (klikk)
noen av disse webtjenestene mangler gode programatiske API:er
VI bruker Yahoo pipes for å få ut dataen vi ønsker i XML format.
La oss gå litt nærmere in på hver enkelt komponent
vi benytter oss av 2 velkjente webtjenester:
google maps som gir oss en adresse gitt en posisjon.
trafikanten ger oss ruta hjem og informasjon om når linjene går, (i realtid)
I tillegg bruke vi lokaliseringsfunktionen i iPhone for å få posisjonering (klikk)
noen av disse webtjenestene mangler gode programatiske API:er
VI bruker Yahoo pipes for å få ut dataen vi ønsker i XML format.
La oss gå litt nærmere in på hver enkelt komponent
Tobias:
Lansert 6 mars 2008
Samme sdk som utviklerne på apple jobber med
Programmering I Objective C (Klassisk C med noen utvidelser for å støtte objektorientering)
SDK:en består av (klikk)
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
en rekke bibliotek
La oss se litt på utviklings miljøet.
Tobias
SDK:n innehåller et relativt sofistikert utviklingsmiljø
Xcode er det samme utviklingsmiljøet som man jobber med når man lager native osx applikasjoner
Apple har naturlig nokk valgt gjenbruke miljøet for utvikling av iphone applikasjoner
Tobias
Dette kan jo virke litt kaosarted, men xcode er ett moderne IDE med flusst av tjenester.
Når du blir vant med xcode, så virker det mye greiere en ved første øyekast.
La oss se litt på de ulike features:ene
(klick)
Code Highlight
SYntax coloring
Code completion
Tobias
Integrated dokumentasjon som er kontext avhengig.
Tobias
INtegrert subversion for versionshantering av prosjektfiler (fungerer bra)
Subversion, CVS
Tobias
oversiktlig prosjekthentering
Gå fort over til neste!!
Roger: Mulighet å bruke en rekke standard gui komponenter som vi kjenner igjen fra de innebygde applikasjonene på iphone
Roger: Skaper grensesnittet gjennom drag n drop
Roger: Gode muligheter for å definere layout for hver enkelt komponent
Roger: Gui:et kobles med drag n drop til en klasse som agerer gui-driver
Roger:
Denne er gull vert når du utvikler iphone appen din
lar deg teste og eventuellt debugge koden din i ett simulert iphone miljø
når alt kommer til allt så viser det seg att det finns ganske store forskjeller mellom simulatorn og selve iphonen, så du må belage deg på å debugge mot iphonen også
Roger: En virtuell instanse av iphonen till å prøve koden din på, uten noe ventetid.
Roger:
Mulighet til å aktivere breakpoints i koden slik at du kan kjøre step-by-step debugging av ditt program.
Her har man også mulighet til å granske objekt.
Gre oversikt over ulike tråder
Roger: Egen innebygged GDB terminal
Roger: Mulighet til å granske minnet
Roger:
Når man har funnet alle buggene som gjør at programmet crasher, så må man finne andre brister.
Dette har apple gjort veldig lett for oss gjennom instruments.
avansert profileringsverkøy
viser minneslekasjer (tru meg de finns)
code hot spots
object allocations
etc
Roger:
klikk
forslag til ulike målinger
Her har vi en kjøring vi har gjort på vår app.
Minneallokering
minnelekasjer
netverksaktivitet
bruk av internminne
bruk av cpu
Du har mulighet till å spare ett eget oppsett av målere
DU har også mulighet til å spare en kjøring
Categories are extentions to classes without subclassing.
It can also be used to distribute a class implementation over several source files.
Categories are extentions to classes without subclassing.
It can also be used to distribute a class implementation over several source files.
Categories are extentions to classes without subclassing.
It can also be used to distribute a class implementation over several source files.
Categories are extentions to classes without subclassing.
It can also be used to distribute a class implementation over several source files.
Categories are extentions to classes without subclassing.
It can also be used to distribute a class implementation over several source files.
Categories are extentions to classes without subclassing.
It can also be used to distribute a class implementation over several source files.
Categories are extentions to classes without subclassing.
It can also be used to distribute a class implementation over several source files.
access is not show here. Default is protected
@private
@public
@protected
When countere reaches 0, dealloc is called.
Dette er ikke en enkelt system. Skulle vi ha implementert dette fra scratch måtte vi ha laget oss et internt adresseregister som mapper fra koordinater til adresser og dessuten måtte vi jo på en eller annen måte ha skaffet oss oversikt over rutetider og sanntidsinformasjon
Vi har defor valgt i bruke en teknikk / konsept som heter mashups. [KLIKK]
Vi begynner med lokaliseringen.
Hvor er jeg?
Rammeverket som kan gi oss svaret heter Core Location (click)
Kanske den heteste tjenesten på iphonen, etterlengtet blant utviklere for mobile platformer
Core Location bruker flere ulike teknologier
Wifi hotspots:
wifi-hotspots vet posisjon og rekkevidde
Basestasjoner:
Telefonen din er knyttet til en basestasjon, basestasjonen vet sin egen posisjon å rekkevidde.
A-GPS:
vangli GPS er for tregt og strømkrevende på grund av krevende beregninger.
For at dette skal virke må man være tilknyttet en basestasjon som støtter A-GPS.
AGPS flytter de tyngste beregningene ut till basestasjonene
Core lokation er grejt å jobbe med, la oss se litt på hvordan vi får ut posisjonen i vårt program
Core Location bruker flere ulike teknologier
Wifi hotspots:
wifi-hotspots vet posisjon og rekkevidde
Basestasjoner:
Telefonen din er knyttet til en basestasjon, basestasjonen vet sin egen posisjon å rekkevidde.
A-GPS:
vangli GPS er for tregt og strømkrevende på grund av krevende beregninger.
For at dette skal virke må man være tilknyttet en basestasjon som støtter A-GPS.
AGPS flytter de tyngste beregningene ut till basestasjonene
Core lokation er grejt å jobbe med, la oss se litt på hvordan vi får ut posisjonen i vårt program
Core Location bruker flere ulike teknologier
Wifi hotspots:
wifi-hotspots vet posisjon og rekkevidde
Basestasjoner:
Telefonen din er knyttet til en basestasjon, basestasjonen vet sin egen posisjon å rekkevidde.
A-GPS:
vangli GPS er for tregt og strømkrevende på grund av krevende beregninger.
For at dette skal virke må man være tilknyttet en basestasjon som støtter A-GPS.
AGPS flytter de tyngste beregningene ut till basestasjonene
Core lokation er grejt å jobbe med, la oss se litt på hvordan vi får ut posisjonen i vårt program
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
Roger
Core location er ett stort rammeverk
CLLocationManager er interfacet
(klikk klikk klikk)
Kan nevne at:
Posisjoner inneholder, nuverende posisjon, forrige målte posisjon, accuracy, højde over havet etc.
So, the iPhone SDK provides only one XML parser
It is event driven. When ever you for instance reach a tag, an event will fire and you can act accordingly
You can not go back in the document.
OpenSOurce alternatives are available if you need to have the whole document in memory.
This is the domain object for travel info, basicly the information we are interested in.
Here is the implementation. Basicly nothing else than the free up the memory and the generation of properties.
Apple ID registrering på apple.
iPhone developer - tilgang til SDK osv
iPhone developer program - tilgang til appstore
Apple ID registrering på apple.
iPhone developer - tilgang til SDK osv
iPhone developer program - tilgang til appstore
Apple ID registrering på apple.
iPhone developer - tilgang til SDK osv
iPhone developer program - tilgang til appstore
Apple ID registrering på apple.
iPhone developer - tilgang til SDK osv
iPhone developer program - tilgang til appstore
You have to have a mac.
When the phone fis
Apple har løsnet litt i det siste.
Simulator vs Emulator
Late som vs kopiere. (Android er java... Eksakt kopi er mulig)
You have to have a mac.
When the phone fis
Apple har løsnet litt i det siste.
Simulator vs Emulator
Late som vs kopiere. (Android er java... Eksakt kopi er mulig)
You have to have a mac.
When the phone fis
Apple har løsnet litt i det siste.
Simulator vs Emulator
Late som vs kopiere. (Android er java... Eksakt kopi er mulig)
You have to have a mac.
When the phone fis
Apple har løsnet litt i det siste.
Simulator vs Emulator
Late som vs kopiere. (Android er java... Eksakt kopi er mulig)
You have to have a mac.
When the phone fis
Apple har løsnet litt i det siste.
Simulator vs Emulator
Late som vs kopiere. (Android er java... Eksakt kopi er mulig)
You have to have a mac.
When the phone fis
Apple har løsnet litt i det siste.
Simulator vs Emulator
Late som vs kopiere. (Android er java... Eksakt kopi er mulig)
So, our software is not released. We just did it for fun. But some guys in a company called shortcuts have released an app that gives you location based realtime info. Try it out i you are in Oslo.