Hjem Sosiale medier Mac Programutvikling for dummier Cheat Sheet - dummies

Mac Programutvikling for dummier Cheat Sheet - dummies

Video: Factorio og programutvikling – Helge Holm – RevolverConf 2016.2 2024

Video: Factorio og programutvikling – Helge Holm – RevolverConf 2016.2 2024
Anonim

Av Karl G. Kowalski

Macintosh applikasjonsutvikling krever kreativitet, Objective-C programmeringsferdigheter, litt tålmodighet og en god hjelp av utholdenhet til å implementere, og leverer Macintosh-programmet ditt i god stand til brukerne. På vei til denne destinasjonen møter du noen utfordringer som vil teste programmerings- og problemløsningskompetanse. Du må ta tak i (blant annet) å bruke delegater til å implementere tilbakekallingsprogrammer; bruker ikke-mål-C-rammer fra Apple; og inkorporere C ++-koden i appene dine.

Macintosh-programutvikling bruker

tilbakeringinger for å tillate Mac OS X å utføre kode i appen din for bestemte operasjoner. Hvis du oppretter en standard Macintosh-vindu eller en dokumentbasert app, vil den aller første koden som OS X utfører, finnes i en av følgende tilbakeringingsmetoder du må opprette for appen din, avhengig av appdesignen:

Vindubaserte apps: (void) applicationDidFinishLaunching: (NSNotification *) aNotification
  • Dokumentbaserte apps: (void) windowControllerDidLoadNib: (NSWindowController *) windowController

  • En tilbakeringing er rett og slett en metode som operativsystemet til slutt utfører mens det prøver å levere eller hente informasjon fra appen din. Din søknadskode vil utføre en metode for en kakao klasse hvor appen din vil få muligheten til å gi navnet på en metode for en av klassene dine, for å bli kalt på et objekt av den klassen din app vil også måtte gi.

A delegat er et hjelperobjekt, som en kakao-klasse bruker til å forlenge klassens funksjonalitet ved å tillate deg å implementere kode som kakao-klassen vil utføre under visse omstendigheter. En kakao-klasse kontrollerer sitt delegatobjekt (hvis en har blitt tildelt) for om delegaten gir en implementering av en bestemt metode. Hvis delegaten har den metoden, utfører kakao-klassen den metoden. Hvis delegaten ikke implementerer den spesifikke metoden, bruker kakao-klassen enten en standardmetode eller logger en feil. De fleste delegatene må innlemme en bestemt protokoll som bestemmer hvilke metoder de kan implementere; Kodens delegater må bruke implementeringsmetodene fra den spesifikke protokollen som delegaten forventer. Her er noen av kakaoobjekter som kan bruke delegater til å utføre koden din:

NSTableView.NSTableView aksepterer en delegat som følger NSTableViewDelegate-protokollen. Dette inkluderer 20 til 30 metoder som appens delegatobjekt kan implementere for å støtte appens behov for å vite hva NSTableView gjør. Det finnes metoder som vil bli kalt i søknaden din når den trenger å vite og reagere på en handling, for eksempel når en bruker foretar et valg i tabellen eller når en kolonne er endret.

  • NSApplication. Du kan tilordne en NSApplicationDelegate til å håndtere noen av metodene som en NSApplication-forekomst (søknaden din) mottar. Disse metodene kan kalles like før eller like etter at applikasjonen din har utført en annen metode, slik at appen din kan bli forberedt.

  • NSWindow. En NSWindowDelegate tilordnet en av programmets vinduer vil gi appen din sjansen til å svare på en brukerendring, flytting eller andre vinduhendelser.

  • NSMenu. Du implementerer en NSMenuDelegate for å støtte hendelser som skjer når en bruker samhandler med menyer i søknaden din.

  • Ikke-objektiv-C-rammer i Macintosh-applikasjoner

Apple gir mange Macintosh-programutviklingsrammer (kodebiblioteker) som appen din kan ringe for å utføre tusenvis av operasjoner i OS X. Mange av disse rammene, som PDF-filen Kit, består av Objective-C klasser, hvorfra appen din kan opprette og bruke objekter i dine applikasjoner. Noen av disse rammene er imidlertid bare biblioteker med funksjoner som appen din kan utføre.

CFNetwork-rammeverket er for eksempel et sett med funksjoner som appen din kan bruke til å utføre finjusterte nettverksforbindelser. NSURL-klassen gir et godt sett med grunnleggende nettverksoperasjoner som er gode for å hente data ved hjelp av en nettadresse. Hvis appen krever mer kontroll over nettverkskommunikasjonen den initierer, må du bruke CFNetwork-rammen og dens funksjoner. Du kan bruke følgende kode for å forberede en HTTP-forespørsel for overføring til en bestemt nettadresse:

CFStringRef httpBody = CFSTR ("); CFStringRef headerFieldName = CFSTR (" Cookie "); // legge til spesifikk informasjonskapsel til HTTP-forespørsel CFStringRef headerFieldValue = CFSTR ("loginID = my_user_name; password = my_password;"); CFStringRef url = CFSTR ("www. Diabeticpad. Com"); CFURLRef urlRef = CFURLCreateWithStrign (kCFAllocatorDefault, url, NULL); CFStringRef requestMethod = CFSTR ("GET"); CFHTTPMessageRef request = CFHTTPMessageCreateRequest (kCFAllocatorDefault, requestMethod, url, kCFHTTPVersion1_1); CFHTTPMessageSetBody (forespørsel, httpBody); // legge cookie CFHTTPMessageSetHeaderFieldValue (forespørsel, headerFieldName, headerFieldValue); CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage (forespørsel);

Når koden din har Den serielle forespørselen, appen din kan deretter åpne en skrive-stream for å levere forespørselen til bestemmelsesstedet.

Alle de C-baserte Apple-rammene gir en sett med funksjoner for å utføre denne typen programmering på lavere nivå. Koden din blir mer komplisert, men Apple gir ikke mål-C-klasser for alle sine rammer.Hvis du virkelig trenger funksjonaliteten som er tilgjengelig i en av rammene, er dette den eneste måten du kan oppnå appens mål på. Følgende rammer gir ikke mål-C-klasser:

Lydverktøyskasse

  • CFNetwork

  • Kjerne MIDI

  • Kjerne Tekst

  • Katalogtjeneste (for eksempel LDAP og Open Directory)

  • Sikkerhet > Hvis du vil lage apper som kan dra full nytte av funksjonene til OS X, må du være klar til å støtte bruken av ikke-objektive C-kodebiblioteker.

  • C ++-kode i Objective-C Macintosh-applikasjoner

Objective-C gir objektorienterte funksjoner for Macintosh-programutvikling, som arv og polymorfisme. Språket er basert på C programmeringsspråket; Derfor kan du bruke C programmeringskunnskap til å kode innenfor Objective-C. Objective-C ++ er en bromekanisme som tillater Objective-C-kildemoduler å jobbe med Objective-C ++-klasser, som kan kompilere og lenke til C ++-kodebiblioteker.

Følgende enkle eksempel på en kvadratmatrise viser innholdet i en C ++ header-fil for en Matrix-klasse. Matrix-klassen leveres med standardkonstruktøren og destruktoren for en C ++-klasse, og metodene er det du forventer for et grunnleggende firkantmatrisobjekt:

klasse Matrix {public: Matrix (int inSize); virtuell ~ Matrix (); int getSize (void); int getDeterminant (void); void setElement (int inRow, int inCol, int inValue); int getElement (int inRow, int inCol); Matrix operator + (const Matrix & inAddend); privat: int m_size; int [] [] m_elements;};

For å bruke Objective-C ++ må objektiv-C ++ klassemodulene bruke filtypen. mm. Dette forteller Xcodes kompilator at klassen skal kompileres ved hjelp av Objective-C ++, som vil gjøre at klassen din kan bruke C ++-språkord. Ved hjelp av Objective-C + + kan appen lage et Matrix-objekt for å utføre grunnleggende operasjoner, for eksempel å legge til to Matrix-objekter sammen. Dette forutsetter at Objective-C ++-kildemodulen har #imported C ++ Matrix. h-fil:

- (void) addTwoMatrices {Matrix matrixOne (3); // 3x3 matrix Matrix matrixTwo (3); // annen int radIndex = 0; int colIndex = 0; for (rowIndex = 0; rowIndex <3; ++ rowIndex) {for (colIndex = 0; colIndex <3; ++ colIndex) {// angi matrisens elementer til deres verdier matrixOne. setElement (rowIndex, colIndex, XXX); // sett matrise to elementer til noen andre verdier matrixTwo. setElement (rowIndex, colIndex, YYY);}} Matrix matrixSum = matrixOne + matrixTwo;

Med Objective-C ++ kan appene dine dra nytte av alle tilgjengelige tredjepartsbiblioteker som er skrevet for C ++.

Mac Programutvikling for dummier Cheat Sheet - dummies

Redaktørens valg

Elektronikk Prosjekter: Hvordan bygge en motordriver - dummier

Elektronikk Prosjekter: Hvordan bygge en motordriver - dummier

Dette prosjektet presenterer en breadboard krets som driver en liten 3 V DC motor fra en parallell port. Fordi denne motoren bruker mye mer strøm enn en parallellport kan håndtere, brukes en ULN2003 Darlington array IC til å kjøre motoren. For å jobbe med dette prosjektet trenger du en datamaskin med parallellport og ...

Elektronikk Prosjekter: Hvordan bygge en LED Driver Circuit - dummies

Elektronikk Prosjekter: Hvordan bygge en LED Driver Circuit - dummies

I dette prosjektet bygger du en elektronisk krets som bruker en transistor for å slå på en LED med en strøm som er mye mindre enn LED-strømmen. Når du lukker bryteren, lyser begge LEDene. LED1 er imidlertid lysere enn LED2 fordi kollektorstrømmen er større enn basestrømmen. Hvis du føler deg ...

 Elektronikkprosjekter: Hvordan bygge en LED-blinker ved hjelp av en Oscillator

Elektronikkprosjekter: Hvordan bygge en LED-blinker ved hjelp av en Oscillator

En elektronisk krets som genererer gjentatte bølgeformer er en oscillator. Den eksakte bølgeformen som genereres avhenger av hvilken type krets som brukes til å skape oscillatoren. Noen kretser genererer sinusbølger, noen genererer firkantede bølger, og andre genererer andre typer bølger. Oscillatorer er essensielle ingredienser i mange forskjellige typer elektroniske enheter, inkludert radioer og ...

Redaktørens valg

Cloud Deployment Models - dummies

Cloud Deployment Models - dummies

Typen av distribusjonsmodell referert til som offentlig sky er hvor cloud computing-tjenesten eies av en leverandør (Microsoft) som tilbyr høyeste effektivitet i et delt, men sikkert miljø. I cloud computing-speak er firmaet som bruker tjenesten, referert til som en leietaker i en offentlig sky. For organisasjoner ...

Vanlige Visio 2007-tastaturgenveier - dummier

Vanlige Visio 2007-tastaturgenveier - dummier

Når du jobber i Visio 2007, ta litt tid til å huske noe tastatur snarveier for vanlige menykommandoer, og du kan bestemt øke arbeidet ditt. Ta en titt på dette diagrammet av Visio-tastatursnarvekkombinasjoner: Ctrl + N Åpne en ny blank tegning Ctrl + O Vis dialogboksen Åpne Ctrl + S Vis dialogboksen Lagre som ...

Vanlige snarveier i Word, Excel og PowerPoint 2016 - dummies

Vanlige snarveier i Word, Excel og PowerPoint 2016 - dummies

Ved å trykke på et par nøkler I kombinasjon i Office 2016-programmer kan du spare tid med enkle oppgaver, for eksempel å kopiere tekst fra ett sted og lime det inn et annet sted. Tastaturgenveiene som følger med her, fungerer like godt i Word, Excel og PowerPoint 2016. Både mus og tastaturmetoder er gitt her. For å gjøre ...

Redaktørens valg

I QuickBooks 2013 Regnskapsfører & Skattrapporter - dummies

I QuickBooks 2013 Regnskapsfører & Skattrapporter - dummies

Kommandoen Rapporter → Regnskapsfører og skatt. Skjult på denne undermenyen er mer enn et dusin menykommandoer og rapporter som er spesielt interessante og nyttige for regnskapsførere. Følgende liste identifiserer disse rapportene: Justert prøvebalanse: Kommandoen for justert prøvebalanse-menyen produserer, av ...

I QuickBooks vises bokføreren og skattereduksjonene - dummies

I QuickBooks vises bokføreren og skattereduksjonene - dummies

I QuickBooks når du velger Rapporter → Regnskapsfører & Skatter kommando. Skjult på denne undermenyen er mer enn et dusin kommandoer og rapporter som er spesielt interessante og nyttige for regnskapsførere. Følgende liste identifiserer disse rapportene: Justert prøvebalanse: Menykommandoen Justert prøvebalanse gir selvsagt en ...

Redigeringsmenykommandoer for QuickBooks - dummies

Redigeringsmenykommandoer for QuickBooks - dummies

Når du jobber med et register i QuickBooks, gir Rediger-menyen flere Andre nyttige kommandoer for inntasting av nye transaksjoner, redigering av eksisterende transaksjoner og gjenbruk av transaksjonsinformasjon: Rediger Kontroll / Innskudd: Denne kommandoen er ekvivalent med knappen Rediger transaksjon (som vises i Register-vinduet). Hvis du velger kommandoen Rediger kontroll / innskudd, viser QuickBooks skrive ...