Mac Application Development For Dummies Cheat Sheet

Macintosh applikasjonsutvikling bruker callbacks
å la Mac OS X til å kjøre kode i din app for spesifikke operasjoner. Hvis du oppretter en standard Macintosh vindu- eller dokumentbasert app, den aller første koden som OS X vil gjennomføre er i en av følgende tilbakeringing metoder du må skape for din app, avhengig av app utforming:

Window-baserte apps: (void) applicationDidFinishLaunching: (NSNotification *) aNotification

Dokumentbaserte apps: (void) windowControllerDidLoadNib: (NSWindowController *) windowController

En tilbakeringing er rett og slett en metode som OS slutt utfører mens den prøver å levere eller hente informasjon fra din app. Søknaden din kode vil utføre en metode for en Cocoa klasse der din app vil ha mulighet til å oppgi navnet på en metode for en av klassene, å bli kalt på et objekt av klassen din app vil også måtte gi.

En delegat
er en hjelper objekt, som en Cocoa klasse bruker til å utvide funksjonaliteten til klassen ved at du kan implementere kode som Cocoa klassen vil kjøre i visse tilfeller. En Cocoa klasse sjekker sin delegat objekt (hvis man har blitt tildelt) for om representanten gir en implementering av en bestemt metode. Dersom representanten har denne metoden, utfører Cocoa klasse som metoden; dersom representanten ikke gjennomfører den spesifikke metoden, Cocoa klassen enten bruker en standard metode for sin egen eller logger en feil. De fleste delegatene må innlemme en bestemt protokoll
som avgjør hvilke metoder de kan iverksette; Koden er delegater må bruke implementere metoder fra bestemte protokollen at representanten forventer.

Her er noen av de Cocoa gjenstander som kan bruke delegater til å kjøre koden din:

NSTableView. Den NSTableView aksepterer en delegat som adlyder NSTableViewDelegate protokollen. Dette inkluderer 20 til 30 metoder som appens delegat objekt kan iverksette for å støtte din app behov for å vite hva NSTableView gjør. Det finnes metoder som vil bli kalt inn søknaden når den trenger å vite og reagere på en handlinger, for eksempel når en bruker gjør et valg i bordet eller når en kolonne er endret.

  • NSApplication. Du kan tildele en NSApplicationDelegate å håndtere noen av metodene som en NSApplication eksempel (din søknad) vil motta. Disse metodene kan kalles like før eller like etter at søknaden utfører en annen metode, slik at programmet kan være forberedt.

    NSWindow. En NSWindowDelegate tilordnet en av programmets vinduer vil gi appen en sjanse til å svare på en bruker resizing, flytter eller andre vindus hendelser.
  • NSMenu. Du implementere en NSMenuDelegate å støtte hendelser som skjer når en bruker samhandler med menyer i søknaden din.

    Ikke-Objective-C Rammeverk i Macintosh Applications

    Apple gir mange Macintosh applikasjonsutvikling rammeverk (kode biblioteker) at appen kan ringe for å utføre de tusenvis av driften i OS X. Mange av disse rammene, for eksempel PDF Kit, er sammensatt av Objective-C klasser, der appen kan lage og bruke objekter i programmene dine. Men noen av disse rammene er bare biblioteker av funksjoner som programmet ditt kan utføre.

    For eksempel er CFNetwork rammeverket et sett med funksjoner som programmet ditt kan bruke for å utføre finjustert nettverkstilkoblinger. Den NSURL klassen gir et godt sett med grunnleggende nettverksoperasjoner som er bra for å hente data ved hjelp av en URL. Hvis appen krever mer kontroll over nettverkskommunikasjon den starter, må du bruke CFNetwork rammeverk 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"); //Legger spesifikk cookie til HTTP requestCFStringRef 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 forespørsel = CFHTTPMessageCreateRequest (kCFAllocatorDefault, requestMethod, url, kCFHTTPVersion1_1); CFHTTPMessageSetBody (forespørsel, httpBody); //legger cookieCFHTTPMessageSetHeaderFieldValue (forespørsel, headerFieldName, headerFieldValue); CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage (forespørsel );

    Når koden din har serie forespørsel til programmet ditt kan deretter åpne en write-stream for levere anmodningen til sin destinasjon.

    Alle de C-baserte Apple rammeverk tilveiebringe et sett av funksjoner for å utføre denne type av lavere-nivå programmering. Koden vil bli mer komplisert, men Apple gir ikke Objective-C klasser for alle sine rammer. Hvis du virkelig trenger den funksjonaliteten som er tilgjengelig i en av disse rammene, er dette den eneste måten du kan oppnå din app mål. Følgende rammer gir ikke Objective-C klasser:

    Audio Toolbox

    CFNetwork

    Kjerne MIDI

    Kjernen Tekst

    Katalogtjeneste (for eksempel LDAP og Open Directory)

    Sikkerhet

    Hvis du vil lage apps som kan dra full nytte av funksjonene i OS X, må du være klar til å støtte bruk av ikke-Objective-C kode biblioteker.

    C ++ kode i Objective-C Macintosh Applications

    Objektiv C gir objektorienterte funksjoner for Macintosh applikasjonsutvikling, for eksempel arv og polymorfisme. Språket er basert på programmeringsspråket C; derfor kan du bruke C-programmering kunnskap til kode i Objective-C. Objective-C ++ er en bro mekanisme som tillater Objective-C kilde moduler for å jobbe med Objective-C ++ klasser, noe som kan kompilere og link med C ++ kode biblioteker.

    Følgende enkelt eksempel på en kvadratmatrise viser innholdet i en C ++ header fil for en Matrix klasse. The Matrix klasse leveres med standard konstruktør og destructor for en C ++ klasse, og metodene er hva du kan forvente for en grunnleggende kvadratmatrise objekt:
    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 operatør + (konst Matrix & inAddend); privat: int m_size; int [] [] m_elements;};

    For å bruke Objective-C ++, din Objective-C ++ klassemoduler må bruke filtypen .mm. Dette forteller Xcode er kompilatoren at klassen skal utarbeides ved å bruke Objective-C ++, som vil tillate din klasse til å bruke C ++ språk søkeord. Bruke Objective-C ++, kan din app skape en Matrix objekt til å utføre grunnleggende operasjoner, for eksempel legge to-Matrix objekter sammen. Dette forutsetter Objective-C ++ kildemodul har #imported C ++ Matrix.h file: Anmeldelser - (void) addTwoMatrices {Matrix MatrixOne (3); //3x3 matrise Matrix matrixTwo (3); //Annen int rowIndex = 0; int colIndex = 0; for (rowIndex = 0; rowIndex < 3; ++ rowIndex) {for (colIndex = 0; colIndex < 3; ++ colIndex) {//sett matrix ens elementer til deres verdier matrixOne.setElement (rowIndex, colIndex, XXX); //Satt matrise to største elementene til noen andre verdier matrixTwo.setElement (rowIndex, colIndex, YYY); }} Matrix matrixSum = MatrixOne + matrixTwo;

    Med Objective-C ++, appene er i stand til å dra nytte av alle de tilgjengelige tredjeparts biblioteker skrevet for C ++
    .