Mac-applikasjonsutvikling for LuckyTemplates Cheat Sheet

Macintosh-applikasjonsutvikling krever kreativitet, Objective-C-programmeringsferdigheter, litt tålmodighet og en god porsjon utholdenhet for å implementere, avgrense og levere Macintosh-applikasjonen i god stand til brukerne. På vei til denne destinasjonen vil du møte noen utfordringer som vil teste ferdighetene dine i programmering og problemløsning. Du må ta tak i (blant annet) å bruke delegater til å implementere tilbakeringing av applikasjoner; bruker ikke-Objective-C-rammeverk fra Apple; og inkludere C++-kode i appene dine.

Implementering av tilbakeringinger i Macintosh-applikasjoner

Macintosh-applikasjonsutvikling bruker tilbakeringinger for å la Mac OS X kjøre kode i appen din for spesifikke operasjoner. Hvis du lager en standard Macintosh-vindu- eller dokumentbasert app, er den aller første koden som OS X vil kjøre i en av følgende tilbakeringingsmetoder du må opprette for appen din, avhengig av appdesignen:

  • Vindubaserte apper: (void)applicationDidFinishLaunching:(NSNotification*)aNotification

  • Dokumentbaserte apper: (void)windowControllerDidLoadNib:(NSWindowController*)windowController

En tilbakeringing er ganske enkelt en metode som operativsystemet til slutt kjører mens det prøver å levere eller hente informasjon fra appen din. Applikasjonskoden din vil kjøre en metode for en Cocoa-klasse der appen din vil ha muligheten til å gi navnet på en metode for en av klassene dine, for å bli kalt på et objekt i den klassen som appen din også må gi.

En delegat er et hjelpeobjekt, som en Cocoa-klasse bruker for å utvide funksjonaliteten til klassen ved å la deg implementere kode som Cocoa-klassen vil kjøre under visse omstendigheter. En kakao-klasse sjekker delegatobjektet sitt (hvis et har blitt tildelt) for om delegaten gir en implementering av en spesifikk metode. Hvis delegaten har den metoden, kjører Cocoa-klassen den metoden; hvis delegaten ikke implementerer den spesifikke metoden, bruker Cocoa-klassen enten en egen standardmetode eller logger en feil. De fleste delegater 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 kakaoobjektene som kan bruke delegater til å utføre koden din:

  • NSTableView. NSTableView godtar 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 er metoder som vil bli kalt opp i applikasjonen din når den trenger å vite og reagere på en handling, for eksempel når en bruker gjør et valg i tabellen eller når størrelsen på en kolonne endres.

  • NSA-applikasjon. Du kan tilordne en NSapplicationDelegate til å håndtere noen av metodene som en NSapplication-instans (din søknad) vil motta. Disse metodene kan kalles rett før eller like etter at applikasjonen din kjører en annen metode, slik at appen din kan forberedes.

  • NSWindow. En NSWindowDelegate tilordnet et av programmets vinduer vil gi appen din en sjanse til å svare på en bruker som endrer størrelse, flytter eller andre vindushendelser.

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

Ikke-Objective-C Frameworks i Macintosh-applikasjoner

Apple tilbyr mange Macintosh-applikasjonsutviklingsrammeverk (kodebiblioteker) som appen din kan kalle for å utføre tusenvis av operasjoner i OS X. Mange av disse rammeverkene, for eksempel PDF-settet, er sammensatt av Objective-C-klasser, hvorfra appen din kan opprette og bruke objekter i applikasjonene dine. Noen av disse rammeverkene er imidlertid bare biblioteker med funksjoner som appen din kan utføre.

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

CFStringRef httpBody = CFSTR( " );
CFStringRef headerFieldName = CFSTR( "Cookie" ); // legg til spesifikk informasjonskapsel til HTTP-forespørsel
CFStringRef headerFieldValue = CFSTR( "loginID=mitt_brukernavn; passord=mitt_passord;" );
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( request, httpBody );
// legg til informasjonskapselen
CFHTTPMessageSetHeaderFieldValue( request, headerFieldName, headerFieldValue );
CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage( request );

Når koden din har den serialiserte forespørselen, kan appen din åpne en skrivestrøm for å levere forespørselen til destinasjonen.

Alle de C-baserte Apple-rammeverket gir et sett med funksjoner for å utføre denne typen programmering på lavere nivå. Koden din vil bli mer komplisert, men Apple tilbyr ikke Objective-C-klasser for alle rammeverkene. Hvis du virkelig trenger funksjonaliteten som er tilgjengelig i et av disse rammeverkene, er dette den eneste måten du kan nå appens mål. Følgende rammeverk gir ikke Objective-C-klasser:

  • Lydverktøykasse

  • CFNettverk

  • Kjerne MIDI

  • Kjernetekst

  • Katalogtjeneste (som 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-Objective-C-kodebiblioteker.

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

Objective-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-programmeringskunnskapen din til å kode innenfor Objective-C. Objective-C++ er en bromekanisme som lar Objective-C-kildemoduler fungere med Objective-C++-klasser, som kan kompilere og koble til C++-kodebiblioteker.

Følgende enkle eksempel på en kvadratisk matrise viser innholdet i en C++-headerfil for en Matrix-klasse. Matrix-klassen kommer med standard konstruktør og destruktor for en C++-klasse, og metodene er det du kan forvente for et grunnleggende kvadratisk matriseobjekt:

klasse matrise
{
offentlig:
    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 );
    Matriseoperator+( const Matrix& inAdddend );
privat:
    int m_størrelse;
    int[][] m_elements;
};

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

- (ugyldig) legg til ToMatriser
{
    Matrix matrixOne( 3 ); // 3x3 matrise
    Matrise matriseTo( 3 ); // en annen
    int rowIndex = 0;
    int colIndex = 0;
    for (rowIndex=0; rowIndex<3; ++rowIndex)
    {
        for (colIndex=0; colIndex<3; ++colIndex)
        {
            // sett matrise ens elementer til deres verdier
            matrixOne.setElement( rowIndex, colIndex, XXX );
            // sett matrise tos elementer til noen andre verdier
            matrixTwo.setElement( rowIndex, colIndex, YYY );
        }
    }
    Matrise matriseSum = matriseEn + matriseTo;

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


Snagit 2018 gjennomgang Hva er nytt siden versjon 13

Snagit 2018 gjennomgang Hva er nytt siden versjon 13

TechSmith Snagit er vår favorittprogramvare for skjermbilder og bilderedigering. Sjekk ut de nye funksjonene i Snagit 2018!

8 elektroniske verktøy for å tegne diagrammer og flytskjemaer

8 elektroniske verktøy for å tegne diagrammer og flytskjemaer

Trenger du å lage diagrammer eller flytskjemaer og ønsker ikke å installere ekstra programvare? Her er en liste over online diagramverktøy.

Kan ikke Spotify spille den gjeldende sangen? Hvordan fikse

Kan ikke Spotify spille den gjeldende sangen? Hvordan fikse

Å ha et hus fullt av trådløst tilkoblede enheter og strømmetjenester som Spotify er flott inntil ting ikke fungerer og du finner interessante løsninger.

Hva er en NVMe M.2 SSD og hvor rask er den?

Hva er en NVMe M.2 SSD og hvor rask er den?

NVMe M.2 SSD er det siste innen datamaskinharddiskteknologi. Hva er det og hvor raskt er det kontra eldre harddisker og Solid State Drives (SSD)?

Sonos vs. AirPlay: Hvorfor jeg valgte AirPlay for Whole House Audio

Sonos vs. AirPlay: Hvorfor jeg valgte AirPlay for Whole House Audio

Sonos er den beste streaming-lydløsningen som starter på $400 for to høyttalere. Men med riktig oppsett kan AirPlay være gratis. La oss se gjennom detaljene.

Google Backup and Sync App erstatter bilder og Disk

Google Backup and Sync App erstatter bilder og Disk

Google Backup and Sync er en ny app som synkroniserer til Bilder og Disk. Les videre for å se hvordan det står opp mot OneDrive, Dropbox, Backblaze og Crashplan.

Cord Cutting: Gjennomgang av MyIPTV med SOPlayer

Cord Cutting: Gjennomgang av MyIPTV med SOPlayer

MyIPTV er en kabelskjæringstjeneste som bruker SOPlayer-appen for flere plattformer og tilbyr TV, filmer og andre former for media for en betalt

Logitech Opplyst Living-Room Keyboard K830

Logitech Opplyst Living-Room Keyboard K830

Logitech ga nylig ut sitt Illuminated Living-Room Keyboard K830 som er ment som en hjemmeunderholdningskamerat. Her er vår anmeldelse av enheten.

CloudHQ Oppdatert: Raskere synkronisering, Rediger Dropbox-filer fra Google Docs

CloudHQ Oppdatert: Raskere synkronisering, Rediger Dropbox-filer fra Google Docs

Her er en titt på oppdateringen nylig utgitt til CloudHQ og hvordan den fungerer. Les videre for å finne mer.

Hva er OnePlus 6T Android-telefon?

Hva er OnePlus 6T Android-telefon?

OnePlus 6T er en førsteklasses flaggskipkvalitet Android-telefon som selges med rabatt sammenlignet med Apple iPhone, Google Pixel 3 eller Samsung Galaxy S9.