Hjem Sosiale medier Hvordan du bruker blokkobjekter i din iOS-app - dummies

Hvordan du bruker blokkobjekter i din iOS-app - dummies

Video: Slik bruker du kart og kompass 2024

Video: Slik bruker du kart og kompass 2024
Anonim

Objektiv-C-blokker er som tradisjonelle C-funksjoner i at blokkene er små, selvforsynte kodenheter i din iOS-app. De kan sendes inn som argumenter for metoder og funksjoner og deretter brukes når de trengs for å gjøre noe arbeid. (Som mange programmeringsemner er forståelsesblokkobjekter enklere når du bruker dem.)

Med iOS 4 og nyere versjoner begynner en rekke metoder og funksjoner i systemrammene å ta blokker som parametere, inkludert følgende: <

Fullføringshåndtering
  • Meldingshåndtering

  • Feilhåndtering

  • Oppsummering

  • Sortering

  • Her kan du bruke en blokkbasert metode for å animere en bil, men blokkere Objekter har også en rekke andre bruksområder, spesielt i Grand Central Dispatch og NSOperationQueue-klassen, de to anbefalte teknologiene for samtidig behandling. Ta gjerne en titt på samtidig behandling.

En av verdiene for å bruke blokker er at du kan få tilgang til lokale variabler (i tillegg til instansvariabler), som du ikke kan gjøre i en funksjon eller tilbakeringing. Du trenger heller ikke å sende data rundt - en blokk kan endre variabler for å sende data tilbake. I tillegg, hvis du trenger å endre noe, er det ingen API å endre, med samtidig rippel-effekt.

Noen ganger er det lettere å følge hva som skjer ved å erklære en blokkvariabel og sende det som argumentet til metoden. Syntaxen for deklarasjon er liknende med standardsyntaxen for funksjonspekere, bortsett fra at du bruker en caret (^) i stedet for en stjernepeker (*).

Hvis du ser på animateWithDuration: animasjoner: fullføring: i UIView-klassen referansen, vil du se

+ (void) animateWithDuration: (NSTimeInterval) varighet animasjoner: (void (^) void)) animasjoner ferdigstillelse: (void (^) (BOOL ferdig)) fullføring;

Apple behandler nå blokker som et primært designmønster, der oppe med arv og delegasjon - så vær ikke overrasket over å finne blokker som brukes mer og mer.

Uansett, fordi det er litt avansert, blir koden undersøkt i dybden, slik at du vil være komfortabel med blokker, til tross for den virkelig rare syntaksen.

For å starte, er dette syntaksen som definerer animasjoner som en blokk som ikke har noen parametere og ingen returverdi:

void (^) (void)) animasjoner

fullføring er definert som en blokk uten retur verdi og tar en enkel boolsk argumentparameter:

(void (^) (BOOL ferdig)) fullføring

Når du lager en blokkinline, bruker du bare caret (^) -operatoren for å indikere begynnelsen på en blokk og følg deretter med koden vedlagt i de normale bøylene.Det var det som foregikk med

animasjoner: ^ {self. bil. center = center;}

og

fullføring: ^ (BOOL ferdig) {[self rotate];}

Selv om du i dette eksemplet bruker blokker inline, kan du også deklare dem som alle andre lokale variabler. Legg til koden i fet skrift til testDrive-metoden som erstatter det du allerede har på det stedet.

- (IBAction) testDrive: (id) avsender {CGPoint center = CGPointMake (bil. Senter. X, selvbilde. Ramme. Opprinnelse. Y + bil. Ramme. Størrelse. Høyde / 2);

void (^ animasjon) () = ^ () { selv. bil. senter = senter; }; ugyldig (^ ferdigstillelse) (BOOL) = ^ (BOOL ferdig) { [selvrotere]; }; [UIView animateWithDuration: 3 animasjoner: animasjon ferdigstillelse: fullføring]; } Når du erklære en blokk, bruker du operatøren (^) til å angi begynnelsen på en blokk med koden som er vedlagt i de normale braces, og et semikolon for å indikere slutten av et blokkuttrykk.

Erklæringen i liste 10-2 er stort sett den samme som du ser i følgende animateWithDuration: animasjoner: ferdigstillelse: metoden deklarasjon, bortsett fra at identifikatorene har blitt flyttet litt rundt. Begge er dristige for å gjøre det litt enklere å se:

+ (void) animateWithDuration: (NSTimeInterval) varighet animasjoner: (

void (^) (void)) ferdiggjøring av animasjoner: ( void (^) (BOOL ferdig) ) ferdigstillelse; Her erklærer du to blokkvariabler ved å bruke ^ -operatøren: ett med navnet på animasjoner som ikke har returverdi, og en med navnet på ferdigstillelse som ikke har noen returverdi og tar BOOL som sitt eneste argument:

void (^ animasjon) () void (^ fullføring) (BOOL)

Dette er som en hvilken som helst annen variabel deklarasjon (int i = 1, for eksempel), der du følger likestillet med definisjonen.

Du bruker operatøren ^ igjen for å indikere begynnelsen på

blokk bokstavelig - definisjonen tildelt blokkvariabelen. Blokken bokstavelig inkluderer argumentnavn (ferdig) samt kroppens (kode) blokk og termineres med en semikolon: void

(^ animasjon) () = ^ () {selv. bil. center = center;}; ugyldig (^ fullføring) (BOOL) = ^ (BOOL ferdig) {[selvrotere];}; Når du får tak i blokker, finner du alle muligheter for å bruke dem for å forenkle koden din.
Hvordan du bruker blokkobjekter i 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 ...