forrige | Indholdsfortegnelse | næste |
historien om iOS | tilslutning til Apple iOS 5-udviklerprogrammet |
Tag din iOS udvikling til det næste niveau
iOS 14 Edition bogen er nu tilgængelig i Print ($39,99) og eBook ($29,99) udgaver. Lær mere…
når vi udvikler apps til iPad, giver Apple OS ikke direkte adgang til noget af dette udstyr. Faktisk foregår al maskininteraktion udelukkende gennem en række forskellige lag af programmer, der fungerer som mellemled mellem applikationskoden og apparatets udstyr. Disse lag udgør det, der er kendt som et operativsystem. I tilfælde af iPad er dette operativsystem kendt som iOS.
for at få en bedre forståelse af iPad-udviklingsmiljøet vil dette kapitel se detaljeret på de forskellige lag, der omfatter iOS 5-operativsystemet og de rammer, der giver os som udviklere mulighed for at skrive iPad-applikationer.
- iPhone OS bliver iOS
- en oversigt over iOS 5-arkitekturen
- Cocoa Touch Layer
- UIKit rammer (UIKit.ramme)
- kort Kit rammer (MapKit.ramme)
- Push Notification Service
- Message UI rammer (MessageUI.ramme)
- adressebog UI ramme (Adressui.ramme)
- Spil Kit Rammer (GameKit.ramme)
- IAD ramme (iAd.ramme)
- Event Kit UI-ramme
- Rammer Konti (Konti.ramme)
- Kvidre Rammer (Kvidre.ramme)
- iOS Media Layer
- Core Video Rammer (CoreVideo.ramme)
- Kernetekst Rammer (Coretekst.ramme)
- Billede I/O Ramme (ImageIO.ramme)
- Aktiver Bibliotek Ramme (AssetsLibrary.ramme)
- Core Grafik Rammer (CoreGraphics.ramme)
- Kernebilledramme (CoreImage.ramme)
- Kvarts Kerne Ramme (Kvartscore.ramme)
- OpenGL ES ramme (OpenGLES.ramme)
- Glkit Ramme (GLKit.ramme)
- Aviskiosk Ramme (Aviskiosk.5488>
- iOS Audio Support
- av fundament rammer (AVFoundation.ramme)
- Core Audio Rammer (CoreAudio.ramme, Audiotoolboks.rammer og AudioUnit.rammer)
- Open Audio Library (OpenAL)
- Medieafspiller Rammer (MediaPlayer.ramme)
- Core Midi Rammer (CoreMIDI.ramme)
- iOS Core Services Layer
- Adressebog Ramme (Adressebog.ramme)
- Cfnetværk Rammer (Cfnetværk.ramme)
- Kernedataramme (CoreData.ramme)
- Kernefundamentramme (CoreFoundation.ramme)
- Core Media Rammer (CoreMedia.ramme)
- Kernetelefoni Rammer (Coretelefoni.ramme)
- EventKit Ramme (EventKit.ramme)
- Fundament Rammer (Foundation.ramme)
- Kerneplaceringsramme (CoreLocation.ramme)
- Rammer For Mobile Kernetjenester (MobileCoreServices.ramme)
- Store Kit Rammer (StoreKit.ramme)
- bibliotek
- Systemkonfigurationsramme (Systemkonfiguration.ramme)
- Hurtig Udseende Ramme (Hurtig Blik.ramme)
- iOS Core os-laget
- Accelerere Rammer (Accelerere.ramme)
- Ekstern Tilbehørsramme (Eksterntilbehør.ramme)
- Sikkerhed Ramme (Sikkerhed.ramme)
- system (LibSystem)
iPhone OS bliver iOS
før udgivelsen af iPad i 2010 blev operativsystemet, der kører på iPhone, generelt omtalt som iPhone os. I betragtning af at operativsystemet, der bruges til iPad, stort set er det samme som på iPhone, gav det ikke meget mening at navngive det iPad OS. I stedet besluttede Apple at vedtage et mere generisk og ikke-enhedsspecifikt navn til operativsystemet. I betragtning af Apples forkærlighed for Navne forud for bogstavet ‘ i ‘ (iTunes, iBookstore, iMac osv.) var det logiske valg selvfølgelig iOS. Desværre er iOS også det navn, som Cisco bruger til operativsystemet på sine routere (Apple ser ud til også at have en forkærlighed for at ignorere varemærker). Når du udfører en internetsøgning efter iOS, skal du derfor være parat til at se et stort antal resultater for Ciscos iOS, som absolut ikke har noget at gøre med Apples iOS.
en oversigt over iOS 5-arkitekturen
som tidligere nævnt består iOS af en række forskellige programlag, som hver giver programmeringsrammer til udvikling af applikationer, der kører oven på det underliggende udstyr.
disse operativsystemlag kan præsenteres diagrammatisk som illustreret i figur 4-1:
figur 4-1
nogle diagrammer, der er designet til grafisk at skildre iOS-programstakken, viser en ekstra boks placeret over Cocoa Touch-laget for at indikere de applikationer, der kører på enheden. I ovenstående diagram har vi ikke gjort det, da dette antyder, at den eneste grænseflade, der er tilgængelig for appen, er Cocoa Touch. I praksis kan en app direkte kalde et af lagene i stakken ned for at udføre opgaver på den fysiske enhed.
når det er sagt, giver hvert operativsystemlag imidlertid et stigende abstraktionsniveau væk fra kompleksiteten ved at arbejde med udstyret. Som iOS-udvikler skal du derfor altid kigge efter løsninger på dine programmeringsmål i rammerne i iOS-lagene på højere niveau, før du tager fat på at skrive kode, der når ned til lagene på lavere niveau. Generelt, jo højere lagniveau du programmerer til, jo mindre indsats og færre kodelinjer skal du skrive for at nå dit mål. Og som enhver veteranprogrammerer vil fortælle dig, jo mindre kode skal du skrive, jo mindre mulighed har du for at introducere fejl.
nu hvor vi har identificeret de forskellige lag, der omfatter iOS 5, kan vi nu se mere detaljeret på de tjenester, der leveres af hvert lag, og de tilsvarende rammer, der gør disse tjenester tilgængelige for os som applikationsudviklere.
Cocoa Touch Layer
Cocoa Touch layer sidder øverst i iOS-stakken og indeholder de rammer, der oftest bruges af iPad-applikationsudviklere. Cocoa Touch er primært skrevet i Objective-C, er baseret på standard Mac OS Cocoa API (som findes på Apple stationære og bærbare computere) og er blevet udvidet og ændret for at imødekomme iPad-udstyrets behov.
Cocoa Touch layer giver følgende rammer for iPad app udvikling:
UIKit rammer (UIKit.ramme)
UIKit-rammen er en stor og funktionsrig Mål-C-baseret programmeringsgrænseflade. Det er uden tvivl den ramme, som du vil bruge det meste af din tid på at arbejde. Hele bøger kunne, og sandsynligvis vil, blive skrevet om UIKit-rammen alene. Nogle af de vigtigste funktioner i UIKit er som følger:
- oprettelse og administration af brugergrænseflade (tekstfelter, knapper, etiketter, farver, skrifttyper osv.)
- administration af applikationslivscyklus
- håndtering af Applikationshændelser (f. eks. berøringsskærm brugerinteraktion)
- Multitasking
- trådløs udskrivning
- databeskyttelse via kryptering
- Klip, Kopier og indsæt funktionalitet
- præsentation og styring af Internet-og tekstindhold
- datahåndtering
- integration mellem applikationer
- push notification i forbindelse med push notification service
- lokale meddelelser (en mekanisme, hvorved en applikation, der kører i baggrunden, kan få brugerens opmærksomhed)
- tilgængelighed
- accelerometer, batteri, nærhedsføler, interaktion med kamera og fotobibliotek
- berøringsskærmsgestegenkendelse
- fildeling (muligheden for at gøre applikationsfiler, der er gemt på enheden, tilgængelige via iTunes)
- blå tandbaseret peer to peer-forbindelse mellem enheder
- forbindelse til eksterne skærme
for at få en fornemmelse af rigdommen i denne ramme er det værd at bruge lidt tid på at gennemse Apples UIKit referencemateriale, der er tilgængeligt online på:
http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIKit_Framework/index.html
kort Kit rammer (MapKit.ramme)
hvis du har brugt nogen mærkbar tid med en iPad, er chancerne for, at du har brug for at bruge Maps-applikationen mere end en gang, enten for at få et kort over et bestemt område eller for at generere kørselsvejledning for at få dig til din tilsigtede destination. Map Kit-rammen giver en programmeringsgrænseflade, der giver dig mulighed for at opbygge kortbaserede funktioner i dine egne applikationer. Dette giver dig mulighed for blandt andet at vise rullekort til ethvert sted, vise kortet svarende til enhedens aktuelle geografiske placering og kommentere kortet på en række forskellige måder.
Push Notification Service
Push Notification Service giver applikationer mulighed for at underrette brugere om en begivenhed, selv når applikationen ikke kører i øjeblikket på enheden. Siden introduktionen af denne service er den oftest blevet brugt af nyhedsbaserede applikationer. Typisk når der er nyheder, genererer tjenesten en besked på enheden med nyhedsoverskriften og giver brugeren mulighed for at indlæse den tilsvarende nyhedsapp for at læse flere detaljer. Denne alarm er typisk ledsaget af en lyd alarm og vibrationer af enheden. Denne funktion skal bruges sparsomt for at undgå at irritere brugeren med hyppige afbrydelser.
Message UI rammer (MessageUI.ramme)
Message UI-rammen indeholder alt hvad du har brug for for at give brugerne mulighed for at komponere og sende e-mail-beskeder fra din applikation. Faktisk giver rammen endda brugergrænsefladeelementerne, gennem hvilke brugeren indtaster e-mail-adresseringsoplysninger og meddelelsesindhold. Alternativt kan disse oplysninger være foruddefineret i din ansøgning og derefter vises for brugeren at redigere og godkende inden afsendelse.
adressebog UI ramme (Adressui.ramme)
i betragtning af at en nøglefunktion på iPad er som en kommunikationsenhed og digital assistent, bør det ikke komme så meget af en overraskelse, at en hel ramme er dedikeret til integrationen af adressebogsdataene i dine egne applikationer. Det primære formål med rammen er at give dig adgang til, vise, redigere og indtaste kontaktoplysninger fra iPad-adressebogen fra din egen applikation.
Spil Kit Rammer (GameKit.ramme)
Game Kit-rammen giver peer-to-peer-forbindelse og stemmekommunikation mellem flere enheder og brugere, så de, der kører den samme app, kan interagere. Da denne funktion først blev introduceret, forventedes det af Apple, at den primært ville blive brugt i multi-player-spil (deraf valg af navn), men de mulige applikationer til denne funktion strækker sig klart langt ud over spiludvikling.
IAD ramme (iAd.ramme)
formålet med IAD-rammen er at give udviklere mulighed for at inkludere bannerannoncering i deres applikationer. Alle annoncer serveres af Apples egen annoncetjeneste.
Event Kit UI-ramme
Event Kit UI-rammen blev introduceret i iOS 4 og leveres for at give adgang til kalenderbegivenhederne og redigeres fra en applikation.
Rammer Konti (Konti.ramme)
iOS 5 introducerer begrebet systemkonti. Disse gør det i det væsentlige muligt at gemme kontooplysningerne for andre tjenester på iOS-enheden og få adgang til inden for applikationskoden. I øjeblikket er systemkonti begrænset til kvidre-konti, selvom andre tjenester som Facebook sandsynligvis vises i fremtidige iOS-udgivelser. Formålet med rammerne konti er at give en API tillader applikationer at få adgang til og administrere disse systemkonti.
Kvidre Rammer (Kvidre.ramme)
kvidre rammer tillader kvidre integration, der skal føjes til applikationer. Rammen fungerer sammen med rammerne konti for at få adgang til brugerens kvidre kontooplysninger.
iOS Media Layer
medielagets rolle er at give iOS lyd, video, animation og grafikfunktioner. Som med de andre lag, der omfatter iOS-stakken, omfatter Medielaget et antal rammer, der kan bruges, når man udvikler iPad-apps. I dette afsnit vil vi se på hver enkelt igen.
Core Video Rammer (CoreVideo.ramme)
Kernevideorammen giver bufferunderstøttelse til Kernemedierammen. Selvom dette kan bruges af applikationsudviklere, er det typisk ikke nødvendigt at bruge denne ramme.
Kernetekst Rammer (Coretekst.ramme)
iOS Core tekst rammer er en C-baseret API designet til at lette håndteringen af avanceret tekst layout og skrifttype rendering krav.
Billede I/O Ramme (ImageIO.ramme)
Image I/O-rammen, hvis formål er at lette import og eksport af billeddata og billedmetadata, blev introduceret i iOS 4. Rammen understøtter en bred vifte af billedformater, herunder PNG, JPEG, TIFF og GIF.
Aktiver Bibliotek Ramme (AssetsLibrary.ramme)
Aktiverbiblioteket giver en mekanisme til lokalisering og hentning af video-og fotofiler placeret på iPad-enheden. Ud over at få adgang til eksisterende billeder og videoer tillader denne ramme også, at nye fotos og videoer gemmes i standardenhedens fotoalbum.
Core Grafik Rammer (CoreGraphics.ramme)
iOS Core Graphics-rammen (ellers kendt som kvarts 2D API) giver en let todimensionel gengivelsesmotor. Funktionerne i denne ramme inkluderer oprettelse og præsentation af PDF-dokument, vektorbaseret tegning, gennemsigtige lag, stibaseret tegning, anti-alias gengivelse, farvemanipulation og-styring, billedgengivelse og gradienter. De, der er bekendt med kvarts 2D API, der kører på MacOS, vil være glade for at høre, at implementeringen af denne API er den samme på iOS.
Kernebilledramme (CoreImage.ramme)
en ny ramme introduceret med iOS 5, der giver et sæt video-og billedfiltrerings-og manipulationsfunktioner til applikationsudviklere.
Kvarts Kerne Ramme (Kvartscore.ramme)
formålet med kvarts kerne rammer er at give animation kapaciteter på iPad. Det giver grundlaget for størstedelen af de visuelle effekter og animation, der bruges af UIKit-rammen, og giver en Mål-C-baseret programmeringsgrænseflade til oprettelse af specialiseret animation inden for iPad-apps.
OpenGL ES ramme (OpenGLES.ramme)
i mange år har industristandarden for højtydende 2D-og 3D-grafiktegning været OpenGL. Oprindeligt udviklet af den nu nedlagte Silicon Graphics, Inc (SGI) i 1990 ‘ erne i form af GL, er den åbne version af denne teknologi (OpenGL) nu under pleje af et non-profit konsortium bestående af en række større virksomheder, herunder Apple, Inc. Intel, Motorola og ARM Holdings.
OpenGL for Embedded Systems (ES) er en letvægtsversion af den fulde OpenGL-specifikation designet specielt til mindre enheder som iPad.
iOS 3 eller nyere understøtter både OpenGL ES 1.1 og 2.0 på visse iPhone-modeller (såsom iPhone 3GS og iPhone 4). Tidligere versioner af iOS og ældre enhedsmodeller understøtter kun OpenGL ES version 1.1.
Glkit Ramme (GLKit.ramme)
GLKit-rammen er et mål-C-baseret API designet til at lette opgaven med at oprette OpenGL ES-baserede applikationer.
Aviskiosk Ramme (Aviskiosk.5488>
aviskiosk-applikationen er en ny funktion i iOS 5 og er beregnet som en central placering for brugerne at få adgang til aviser og magasiner. Aviskiosk-rammen giver mulighed for udvikling af applikationer, der bruger denne nye service.
iOS Audio Support
iOS er i stand til at understøtte lyd i AAC, Apple Lossless (ALAC), a-lov, IMA/ADPCM, lineær PCM, LARP-lov, DVI/Intel IMA ADPCM, Microsoft GSM 6.10 og Aes3-2003 formater gennem understøttelsen fra følgende rammer.
av fundament rammer (AVFoundation.ramme)
en Mål-C-baseret ramme designet til at tillade afspilning, optagelse og styring af lydindhold.
Core Audio Rammer (CoreAudio.ramme, Audiotoolboks.rammer og AudioUnit.rammer)
rammerne, der omfatter Core Audio til iOS, definerer understøttede lydtyper, afspilning og optagelse af lydfiler og streams og giver også adgang til enhedens indbyggede lydbehandlingsenheder.
Open Audio Library (OpenAL)
OpenAL er en tværplatformsteknologi, der bruges til at levere 3D-lydeffekter af høj kvalitet (også kaldet positionslyd). Positionel lyd kan bruges i en række applikationer, men bruges typisk til at give lydeffekter i spil.
Medieafspiller Rammer (MediaPlayer.ramme)
iOS Media Player-rammen er i stand til at afspille video i .mov, .mp4,.m4v og .3GP formater på en række kompression standarder, opløsninger og frame rates.
Core Midi Rammer (CoreMIDI.ramme)
introduceret i iOS 4 giver Core MIDI-rammen en API til applikationer til at interagere med MIDI-kompatible enheder såsom synteser og tastaturer via iPad ‘ s dock-stik.
iOS Core Services Layer
iOS Core Services layer giver meget af det fundament, som de tidligere refererede lag er bygget på og består af følgende rammer.
Adressebog Ramme (Adressebog.ramme)
Adressebogrammen giver programmatisk adgang til iPad-Adressebogskontaktdatabasen, der giver applikationer mulighed for at hente og ændre kontaktposter.
Cfnetværk Rammer (Cfnetværk.ramme)
Cfnetværksrammen giver en C-baseret grænseflade til TCP/IP-netværksprotokol-stakken og adgang på lavt niveau til BSD-stik. Dette gør det muligt at skrive applikationskode, der fungerer med HTTP -, FTP-og Domænenavneservere og til at etablere sikre og krypterede forbindelser ved hjælp af Secure Sockets Layer (SSL) eller Transport Layer Security (TLS).
Kernedataramme (CoreData.ramme)
denne ramme er tilvejebragt for at lette oprettelsen af datamodellering og opbevaring i MVC-baserede applikationer. Brug af Kernedatarammen reducerer signifikant mængden af kode, der skal skrives for at udføre almindelige opgaver, når du arbejder med strukturerede data i en applikation.
Kernefundamentramme (CoreFoundation.ramme)
Core Foundation-rammen er en C-baseret ramme, der giver grundlæggende funktionalitet såsom datatyper, strengmanipulation, rå blokdatastyring, URL-manipulation, tråde og kørsløjfer, dato og klokkeslæt, grundlæggende kml-manipulation og port-og sokkelkommunikation. Yderligere funktioner ud over dem, der er inkluderet i denne ramme, leveres via libml2-biblioteket. Selvom dette er en C-baseret grænseflade, de fleste af kapaciteterne i Core Foundation-rammen er også tilgængelige med Objective-C-indpakninger via Foundation-rammen.
Core Media Rammer (CoreMedia.ramme)
Kernemedierammen er det lavere niveau fundament, hvorpå AV-Fundamentlaget er bygget. Mens de fleste lyd-og videoopgaver kan og bør udføres ved hjælp af AV Foundation-rammen på højere niveau, er der også adgang til situationer, hvor kontrol på lavere niveau kræves af iOS-applikationsudvikleren.
Kernetelefoni Rammer (Coretelefoni.ramme)
iOS-Kernetelefonirammen er tilvejebragt for at give applikationer mulighed for at forhøre enheden for information om den aktuelle mobiltelefontjenesteudbyder og modtage anmeldelse af telefoni relaterede begivenheder.
EventKit Ramme (EventKit.ramme)
en API designet til at give applikationer adgang til kalenderen og alarmer på enheden.
Fundament Rammer (Foundation.ramme)
Fundamentrammen er den standard Objective-C-ramme, der vil være kendt for dem, der har programmeret i Objective-C på andre platforme (sandsynligvis Mac OS). I det væsentlige består dette af Objective-C-indpakninger omkring meget af den C-baserede Kernefundamentramme.
Kerneplaceringsramme (CoreLocation.ramme)
Kerneplaceringsrammen giver dig mulighed for at få den aktuelle geografiske placering af enheden (breddegrad, længdegrad og højde) og kompasaflæsninger fra med dine egne applikationer. Den metode, der bruges af enheden til at levere koordinater, afhænger af de tilgængelige data på det tidspunkt, hvor oplysningerne anmodes om, og den udstyrsstøtte, der leveres af den bestemte iPad-model, som appen kører på (GPS og kompas vises kun på nylige modeller). Dette vil enten være baseret på GPS-aflæsninger, trådløse netværksdata eller celletårnstriangulering (eller en kombination af de tre).
Rammer For Mobile Kernetjenester (MobileCoreServices.ramme)
iOS Mobile Core Services rammer danner grundlaget for Apples Uniform Type identifier (UTI) mekanisme, et system til at specificere og identificere datatyper. En lang række foruddefinerede identifikatorer er blevet defineret af Apple, herunder så forskellige datatyper som tekst, RTF, HTML, JavaScript .PPT-filer, PhotoShop-billeder og MP3-filer.
Store Kit Rammer (StoreKit.ramme)
formålet med Store Kit-rammen er at lette handelstransaktioner mellem din applikation og Apple App Store. Før version 3.0 af iOS var det kun muligt at opkræve en kunde for en app på det tidspunkt, hvor de købte den fra App Store. iOS 3.0 introducerede begrebet “in app purchase”, hvor brugeren kan få mulighed for at foretage yderligere betalinger fra applikationen. Dette kan for eksempel involvere implementering af en abonnementsmodel til en applikation, køb af ekstra funktionalitet eller endda køb af en hurtigere bil, som du kan køre i et racerspil.
bibliotek
gør det muligt at oprette og manipulere en let database fra din iPad-applikation.
Systemkonfigurationsramme (Systemkonfiguration.ramme)
systemkonfigurationsrammen giver applikationer adgang til enhedens netværkskonfigurationsindstillinger for at etablere oplysninger om enhedens “rækkevidde” (for eksempel om trådløs internetadgang eller celleforbindelse er aktiv, og om og hvordan trafik kan dirigeres til en server).
Hurtig Udseende Ramme (Hurtig Blik.ramme)
hurtig Look-rammen giver en nyttig mekanisme til visning af forhåndsvisninger af indholdet af filtyper, der er indlæst på enheden (typisk via en internet-eller netværksforbindelse), som applikationen ikke allerede yder support til. Filformattyper, der understøttes af denne ramme, inkluderer iarbejde, Microsoft Office-dokument, RTF-Format, Adobe PDF, billedfiler, offentlig.tekstfiler og kommasepareret (CSV).
iOS Core os-laget
Core os-laget indtager den nederste position af iOS-stakken og sidder som sådan direkte oven på enhedens udstyr. Laget leverer en række tjenester, herunder netværk på lavt niveau, adgang til eksternt tilbehør og de sædvanlige grundlæggende operativsystemtjenester såsom hukommelsesstyring, filsystemhåndtering og tråde.
Accelerere Rammer (Accelerere.ramme)
Accelerate-rammen giver et maskinoptimeret C-baseret API til udførelse af komplekse og store tal matematik, vektor, digital signalbehandling (DSP) og billedbehandlingsopgaver og beregninger.
Ekstern Tilbehørsramme (Eksterntilbehør.ramme)
giver mulighed for at forhøre og kommunikere med eksternt tilbehør, der er tilsluttet fysisk til iPad via 30-polet dock-stik eller trådløst via Bluetooth.
Sikkerhed Ramme (Sikkerhed.ramme)
iOS-sikkerhedsrammen indeholder alle de sikkerhedsgrænseflader, du forventer at finde på en enhed, der kan oprette forbindelse til eksterne netværk, herunder certifikater, offentlige og private nøgler, tillidspolitikker, nøgleringe, kryptering, fordøjelser og Hash-baseret Meddelelsesgodkendelseskode (HMAC).
system (LibSystem)
som vi tidligere har nævnt, er iOS bygget på et unikt fundament. Systemkomponenten i Core os-laget giver stort set den samme funktionalitet som ethvert andet operativsystem. Dette lag inkluderer operativsystemkernen (baseret på Mach-kernen udviklet af Carnegie Mellon University) og enhedsdrivere. Kernen er det fundament, som hele iOS-platformen er bygget på, og giver grænsefladen på lavt niveau til det underliggende udstyr. Kernen er blandt andet ansvarlig for hukommelsesallokering, proceslivscyklusstyring, input/output, kommunikation mellem processer, trådstyring, netværk på lavt niveau, filsystemadgang og trådstyring.
som appudvikler er din adgang til systemgrænsefladerne begrænset af sikkerheds-og stabilitetshensyn. De grænseflader, der er tilgængelige for dig, findes i et c-baseret bibliotek kaldet LibSystem. Som med alle andre lag i iOS-stakken skal disse grænseflader kun bruges, når du er helt sikker på, at der ikke er nogen måde at nå det samme mål ved hjælp af en ramme placeret i et højere iOS-lag.
Tag din iOS udvikling til det næste niveau
iOS 14 Edition bogen er nu tilgængelig i Print ($39,99) og eBook ($29,99) udgaver. Lær mere…
forrige | Indholdsfortegnelse | næste |
historien om iOS | tilslutning til Apple iOS 5-udviklerprogrammet |