Hjem Sosiale medier Hvordan administrere minne til deg iOS App - dummies

Hvordan administrere minne til deg iOS App - dummies

Innholdsfortegnelse:

Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024

Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
Anonim

så kraftig som det er, er iPhone - og til og med iPad - begrenset i ressurser, og den mest kritiske av disse ressursene for iOS-apper er minne.

Minnehåndtering

Når du (eller et rammeobjekt) lager et objekt ved hjelp av Objective-C, tildeler du minne for det objekt. Selv om iOS-enheter og Mac-enen bruker alt som er kjent som virtuelt minne, i motsetning til Mac, er virtuelt minne i iOS begrenset til den faktiske mengden fysisk minne. Så når det begynner å løpe lite på minne, Memory Manager frigjør minnesider som inneholder skrivebeskyttet innhold (for eksempel kode).

På denne måten er alt det du trenger å gjøre, å laste originalene tilbake til minnet når I motsetning til hva Mac gjør, lagrer iOS ikke midlertidig "byttbart" minne (for eksempel objektdata) til disken til ledig plass og th da leser dataene tilbake senere når det trengs. Denne tilstanden begrenser mengden tilgjengelig minne.

Så som du kan se, når et objekt er gjort ved hjelp av minne, er det kritisk at minnet frigis til bruk av andre objekter.

Hvis minnet fortsetter å være begrenset, kan systemet også sende varsler til den løpende appen, og be om å frigjøre ekstra minne. Dette er en av de kritiske hendelsene som alle appene må svare på.

I Mål-C, styres minnet i iOS-apper ved referansetelling - holder systemet oppdatert på om en gjenstand for tiden blir brukt. Les videre for alle detaljer.

Referanse telling

Faktisk er minnehåndtering bare en øvelse i telling. Hvert objekt har sin egen referanse telling, eller behold count, som er antall andre objekter som for øyeblikket bruker objektet. Så lenge beholdningstellingen er større enn null, antar minnestyreren at noen bryr seg om objektet og la det være alene.

Når et objekts beholdning av teller går til null, vet minnebehandleren at ingen trenger det lenger og sender objektet en dealloc-melding, og etter det blir minnet returnert til systemet som skal gjenbrukes.

Denne prosessen høres ganske grei ut, men hvordan øker telleverdien økt og redusert? Inntil Xcode 4. 2 og iOS 5. 0, måtte du administrere beholdningen i appen din. Når et objekt opprettes via allokering eller ny eller gjennom en kopi eller muteableCopy-melding, er objektets beholdningstall satt til 1.

Når appen din bruker en av disse metodene, overføres eierskap til objektet som sendte meldingen - det er objektet har blitt beholdt, og objektet som sendte meldingen, blir en ikke-eksklusiv eier av objektet. Eierskap betyr her at objektet vil være der for å bruke til det er eksplisitt utgitt ved å sende det en melding når det ikke lenger er nødvendig.

Før Xcode 4. 2 og iOS 5. 0, hvis du ikke opprettet et objekt ved en av disse metodene, men du ønsket å bli eier, og dermed sørge for at objektet holdt seg rundt for deg å bruke til du var gjort med det, var det opp til deg å sende en lagringsmelding for å øke beholdningen, og når du var ferdig, sendte du en utgivelsesmelding.

Dette skyldes at skaperen av objektet (som forårsaket at beholdningsverdien skal settes til 1), kan ha autorelatt det - sendte et objekt en utgivelsesmelding som vil få den til å bli utgitt senere (vanligvis neste gang løpsløyfen er oppgitt).

Dette er nyttig i situasjoner der du vil avstå fra eierskap av et objekt, men unngå muligheten for at den blir distribuert umiddelbart (for eksempel når du returnerer et objekt fra en metode). I begge tilfeller holdt du en peker på objektet slik at den kunne brukes.

Selv om denne tilnærmingen var enkel i teorien, var det en ekte hodepine for programmerere. Det store flertallet av systemkrasj oppstod fordi apps gikk tom for minne og ble stengt av systemet. I noen av disse tilfellene har appen ikke svart på varslingsmetoder og administrerer advarslene om lavminnet.

For det meste, selv om appen reagerte på advarslene om lavminnet, var det imidlertid begrenset til hva det kunne gjøre fordi minnet var lekket. Minne var faktisk tilgjengelig fordi noen gjenstander ikke ble brukt, men minnet av objektene var ikke gitt ut igjen til systemet. Det var ikke lenger poeng på disse objektene, slik at de ikke kunne frigjøres og deretter distribueres og minnet gjenbrukes. Utviklere har hatt flere måter å håndtere minne automatisk. Den ene er

søppelsamling, som skanner gjennom minne og slipper ut objekter som ikke har noen poeng til dem. Garbage collection for Objective-C var tilgjengelig på Mac, men søppelkolleksjon har noen problemer. Det kan starte opp og pause appene dine på den mest uopprettelige tiden, og det påvirker ytelsen og brukeropplevelsen fordi du ikke har noen kontroll, eller noen ide, når det vil oppstå. Det ble aldri implementert på iOS og er avviklet fra begynnelsen med OS X 10. 8 (Mountain Lion).

Hvis du trenger å gjøre all denne minnehukommelsen i appen din, er den endret med de nyeste versjonene av Objective-C-kompilatoren, som nå kommer med

automatisk referansetelling (ARC), som er aktivert som standard når du opprett et prosjekt. ARC gjør for deg i kompilatoren hva du pleide å gjøre på egen hånd. Den håndterer alle utgivelsene, autoreleaser, og beholder for deg.

Hvordan administrere minne til deg 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 ...