Hjem Sosiale medier Hvordan du bruker automatisk referansetelling (ARC) for din iOS-app - dummies

Hvordan du bruker automatisk referansetelling (ARC) for din iOS-app - dummies

Video: Introduction to iOS, by Rhed Shi 2024

Video: Introduction to iOS, by Rhed Shi 2024
Anonim

Du vil kanskje bruke ARC for din iOS-app. Automatisk referanse telling (ARC) er en kompilator-nivå funksjon som forenkler prosessen med å styre levetiden til Objective-C objekter. I stedet for at du må huske når du skal beholde eller slippe et objekt, vurderer ARC levetidskravene til objektene dine og automatisk syntetiserer de aktuelle metallsamtaler på kompileringstidspunktet.

Det er ikke en ny runtime minnemodell - og det er ikke en søppelkollektor. Alle handlingen foregår i kompilatoren. ARC tar seg av prosessen med å beholde og frigjøre objekter ved å utnytte (og ha kompilatoren håndheve) navngivningskonvensjoner. Det er også avhengig av nye objekt pointer eierskap kvalifiseringer.

Lar deg bekymre deg, ARC er faktisk mye raskere (har bedre ytelse) enn å gjøre minnehåndtering på egen hånd.

ARC automatiserer ikke malloc () og gratis () (C-funksjoner) og automatiserer ikke (CF) eller (CG).

For å være i stand til å håndtere minne for deg, pålegger ARC noen begrensninger - primært håndheve noen beste praksis og unnlate noen annen praksis. Du trenger ikke å bekymre deg for det meste av dette i en app som ble opprettet for å bruke ARC.

Her er reglene du må følge for å bruke ARC i appen din.

  • Regel 1: Ikke ring behold , utgivelse eller autorelease metoder. I tillegg kan du ikke implementere egendefinerte eller metoder.

    Hvis du er ny til Objective-C programmering, vil denne regelen ikke bety noe for deg, fordi det ikke er noe du har gjort i dine eksisterende apper. Den eneste grunnen til at du trenger å vite om denne regelen er å forstå hva ikke-ARC-kode gjør for å håndtere minne. Hvis du er en gammel hånd, har du brukt disse metodene, og du vil gjerne bli fortalt ikke for å bruke dem.

    Du kan gi en tilpasset implementering av dealloc hvis du trenger å administrere andre ressurser.

  • Regel 2: Ikke lag objektspekere i C-strukturer. Fordi kompilatoren må vite når referanser kommer og går, kan du ikke lagre objektspekere i strukturer. For de fleste lesere vil det ikke være et problem fordi du skal bruke objekter i stedet for C-strukturer.

  • Regel 3: Informer kompilatoren om eierskap ved bruk av Core Foundation-stilobjekter. I IOS-apper bruker du ofte CoreFoundation-rammen.

    CoreFoundation-objekter er noe som begynner med en CF-ting som adressebokfunksjonene, for eksempel.Et CoreFoundation-objekt ville se slik ut:

    AudioServicesCreateSystemSoundID ((__bridge CFURLRef) burnRubberURL, burnRubberSoundID);
    

    ARC håndterer ikke automatisk levetiden til CoreFoundation-typer, og det finnes CoreFoundation-minnehåndteringsregler og funksjoner du kan bruke, for eksempel CFRetain og CFRelease (eller tilsvarende typespesifikke varianter).

    For det meste trenger du ikke å bekymre deg for minnehåndtering fordi du vanligvis vil kaste et objektiv-C-objekt til en CoreFoundation-typeobjekt, eller omvendt - med det resultat at du ikke oppnår et CoreFoundation-minne ledelsen i koden din. Du må fortsatt la kompilatoren vite om eventuelle minnehensynsimplikasjoner, skjønt.

    Du sier rett og slett at ARC ikke skal bekymre seg ved å bruke en _bridge kast.

    Hvis du har CoreFoundation minnehåndtering, vil makroer som CFBridgingRetain eller CFBridgingRelease overføre eierskap mellom ARC og CoreFoundation.

  • Regel 4: Bruk @autoreleasepool søkeordet til å markere starten på en autorelease-blokk. Dette er ikke noe du vil være bekymret for - eller vil aldri gjøre, for den saks skyld. Men det er en regel likevel.

  • Regel 5: Følg navngivningskonvensjonene. Kompilatoren vet om du skal beholde et objekt basert på hva som kommer tilbake. Noen ganger gjenstår objektet som returneres av en metode, og noen ganger er det autorisert senere. Hvis objektet skal bli autorisert, må objektet beholdes. Hvis den allerede er beholdt, vil du ikke at kompilatoren skal gjøre noe.

    Den eneste måten kompilatoren vet om en gjenstand har blitt beholdt når den returneres, er gjennom bestemte navngivningskonvensjoner. Under ARC er disse navngivningskonvensjonene nå en del av språket, og du må følge dem.

    Kompilatoren vet at et beholdt objekt har blitt returnert når det første ordet i den første delen av velgeren (metodenavnet) er allokert, nytt, kopi, muteable kopi eller init. Disse metodene overfører eierskap - hvor overført eierskap betyr at objektet har blitt beholdt for deg. Et eksempel er NSString initWithFormat: metoden. (Husk at "eierskap" ikke er eksklusivt eierskap: Flere objekter kan samtidig eie et enkelt objekt.)

    I tillegg kan du ikke gi en eiendom et navn som begynner med.

  • Regel 6: Følg bare reglene. Det er det - ingen å holde ut eller autoreleasing. Bare følg reglene og koden til ditt hjerte innhold uten å bekymre deg om minnehåndtering.

    Unntatt, selvfølgelig, i noen situasjoner, må du eksplisitt fortelle kompilatoren om hva du vil gjøre. I slike tilfeller må du fortelle kompilatoren eksplisitt om et objekts levetid.

Hvordan du bruker automatisk referansetelling (ARC) for din iOS-app - dummies

Redaktørens valg

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Bruk skjermfeltet til å endre QuickBooks 2014 Rapporter - dummies

Skjermbildet i QuickBooks Modify Report dialogboksen lar deg kontrollere rapportintervalldatoen, rapportgrunnlaget, kolonnene og en annen formatering. Bokstavene Rapporter datoområde - Datoer, Fra og Til - gjør det samme som Datoer, Fra og Til bokser i Rapportvinduet. Disse boksene lar ...

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2013 Rapporter - dummies

Hvis du klikker Tilpass rapport, QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Redaktørens valg

Administrere Cloud Computing Resources - dummies

Administrere Cloud Computing Resources - dummies

I teorien bør cloud computing-tjenester ikke være forskjellig fra ressursene i din eget miljø, bortsett fra at de bor eksternt. Ideelt sett har du en komplett visning av cloud computing-ressursene du bruker i dag, eller vil kanskje bruke i fremtiden. I de fleste skymiljøer kan kunden bare få tilgang til ...

Tips for Going Cloud med datanettverkene dine - dummies

Tips for Going Cloud med datanettverkene dine - dummies

Beregning med datanettverket ditt kan være, hva skal du gjøre for å ta nettverket ditt mot skyen? Her er noen anbefalinger: Ikke stole på en dårlig Internett-tilkobling. Først og fremst, før du tar noen av nettverksoperasjonene i skyen, gjør du ...

Nettverkstjenester levert gjennom Cloud Computing - dummies

Nettverkstjenester levert gjennom Cloud Computing - dummies

Tre forskjellige typer nettverkstjenester kan leveres via skyen: applikasjoner , plattformer og tjenester (infrastruktur). I de følgende avsnittene beskrives disse tre typer skyttjenester i større detalj. Programmer i skyen Vanligvis kalt Software as a Service (SaaS), fullt funksjonelle applikasjoner kan leveres via skyen. En av ...

Redaktørens valg

10 Hadoop Ressurser verdt en bokmerke - dummies

10 Hadoop Ressurser verdt en bokmerke - dummies

Følgende er ti fantastiske Hadoop-ressurser som er verdige til å skape en bokmerke i nettleseren din. Disse ressursene hjelper deg med å skape en livslang læringsplan for Hadoop. Sentralnervesystemet: Apache. org Apache Software Foundation (ASF) er det sentrale fellesskapet for open source-programvareprosjekter. Ikke bare et prosjekt kan være et Apache-prosjekt - ...

Data transformasjon i Hadoop - dummies

Data transformasjon i Hadoop - dummies

Ideen om Hadoop-inspirerte ETL motorer har fått mye trekkraft de siste årene. Hadoop er trods alt en fleksibel datalagrings- og behandlingsplattform som kan støtte store mengder data og operasjoner på dataene. Samtidig er det feiltolerant, og det gir mulighet for kapital- og programvarekostnad ...

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Datablokker i Hadoop Distributed File System (HDFS) - dummier

Når du lagrer en fil i HDFS, bryter systemet det ned i et sett med individuelle blokker og lagrer disse blokkene i forskjellige slave noder i Hadoop-klyngen. Dette er en helt vanlig ting å gjøre, da alle filsystemer bryter filer ned i blokker før de lagres til disk. HDFS har ingen ...