Cheat Sheet za razvoj aplikacija za Mac za LuckyTemplates

Razvoj Macintosh aplikacija zahtijeva kreativnost, vještine programiranja Objective-C, malo strpljenja i lijepu upornost za implementaciju, usavršavanje i isporuku vaše Macintosh aplikacije u dobrom radnom stanju vašim korisnicima. Na svom putu do ovog odredišta naići ćete na izazove koji će testirati vaše vještine programiranja i rješavanja problema. Morate se uhvatiti u koštac (između ostalog) s korištenjem delegata za implementaciju povratnih poziva aplikacije; korištenje ne-Objective-C okvira iz Applea; i ugrađivanje C++ koda u svoje aplikacije.

Implementacija povratnih poziva u Macintosh aplikacijama

Razvoj Macintosh aplikacija koristi povratne pozive kako bi omogućio Mac OS X izvršavanje koda unutar vaše aplikacije za određene operacije. Ako stvarate standardnu ​​aplikaciju temeljenu na prozoru ili dokumentu za Macintosh, prvi kod koji će OS X izvršiti je u jednoj od sljedećih metoda povratnog poziva koje morate izraditi za svoju aplikaciju, ovisno o dizajnu aplikacije:

  • Aplikacije koje se temelje na prozoru: (void)applicationDidFinishLaunching:(NSNotification*)aNotification

  • Aplikacije temeljene na dokumentu: (void)windowControllerDidLoadNib:(NSWindowController*)windowController

Povratni poziv jednostavno je metoda koju OS na kraju izvršava dok pokušava dostaviti ili dohvatiti informacije iz vaše aplikacije. Vaš će kod aplikacije izvršiti metodu za klasu Cocoa gdje će vaša aplikacija imati priliku dati naziv metode jedne od vaših klasa, koja će biti pozvana na objektu te klase koju će vaša aplikacija također morati pružiti.

Delegat je pomoćni objekt, kojem je kakao klasa koristi proširiti funkcionalnost klase omogućujući vam da provesti kod kojih je kakao klasa će izvršiti u određenim okolnostima. Klasa Cocoa provjerava svoj objekt delegata (ako je dodijeljen) daje li delegat implementaciju određene metode. Ako delegat ima tu metodu, klasa Cocoa izvršava tu metodu; ako delegat ne implementira tu specifičnu metodu, klasa Cocoa ili koristi vlastitu zadanu metodu ili bilježi pogrešku. Većina delegata mora uključiti određeni protokol koji određuje koje metode mogu implementirati; delegati vašeg koda moraju koristiti metode implementacije iz specifičnog protokola koji delegat očekuje.

Evo nekih objekata Cocoa koji mogu koristiti delegate za izvršavanje vašeg koda:

  • NSTableView. NSTableView prihvaća delegata koji poštuje NSTableViewDelegate protokol. To uključuje 20 do 30 metoda koje delegatski objekt vaše aplikacije može implementirati kako bi podržao potrebu vaše aplikacije da zna što radi NSTableView. Postoje metode koje će se pozvati u vašoj aplikaciji kada treba znati i reagirati na radnju, kao što je kada korisnik napravi odabir u tablici ili kada se promijeni veličina stupca.

  • NSA aplikacija. Možete dodijeliti NSApplicationDelegate za rukovanje nekim metodama koje će NSApplication instanca (vaša aplikacija) primiti. Te se metode mogu pozvati neposredno prije ili neposredno nakon što vaša aplikacija izvrši drugu metodu, tako da se vaša aplikacija može pripremiti.

  • NSWindow. NSWindowDelegate dodijeljen jednom od prozora vaše aplikacije dat će vašoj aplikaciji priliku da odgovori na korisnikovu promjenu veličine, premještanje ili druge događaje prozora.

  • NSMenu. NsMenuDelegate implementirate za podršku događajima koji se događaju kada korisnik stupi u interakciju s izbornicima u vašoj aplikaciji.

Non-Objective-C okviri u Macintosh aplikacijama

Apple nudi mnoge Macintosh okvire za razvoj aplikacija (biblioteke kodova) koje vaša aplikacija može pozvati za izvođenje tisuća operacija u OS X. Mnogi od tih okvira, kao što je PDF Kit, sastoje se od Objective-C klasa, iz kojih vaša aplikacija može kreirajte i koristite objekte unutar svojih aplikacija. Međutim, neki od ovih okvira samo su biblioteke funkcija koje vaša aplikacija može izvršiti.

Na primjer, okvir CFNetwork je skup funkcija koje vaša aplikacija može koristiti za izvođenje fino podešenih mrežnih veza. Klasa NSURL pruža dobar skup osnovnih mrežnih operacija koje su izvrsne za dohvaćanje podataka pomoću URL-a. Ako vaša aplikacija zahtijeva veću kontrolu nad mrežnom komunikacijom koju pokreće, morat ćete koristiti okvir CFNetwork i njegove funkcije. Možete koristiti sljedeći kod za pripremu HTTP zahtjeva za prijenos na određeni URL:

CFStringRef httpBody = CFSTR( " );
CFStringRef headerFieldName = CFSTR( "Kolačić"); // dodaj određeni kolačić u HTTP zahtjev
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 zahtjev = CFHTTPMessageCreateRequest( kCFAllocatorDefault, requestMethod, url, kCFHTTPVersion1_1 );
CFHTTPMessageSetBody( zahtjev, httpBody);
// dodaj kolačić
CFHTTPMessageSetHeaderFieldValue(zahtjev, zaglavljeImeFieldName, HeaderFieldValue);
CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage( zahtjev);

Nakon što vaš kod ima serijalizirani zahtjev, vaša aplikacija može otvoriti stream za pisanje kako bi zahtjev isporučila na njegovo odredište.

Svi Appleovi okviri temeljeni na C-u pružaju skup funkcija za izvođenje ove vrste programiranja niže razine. Vaš će kod postati kompliciraniji, ali Apple ne nudi Objective-C klase za sve svoje okvire. Ako stvarno trebate funkcionalnost dostupnu u jednom od tih okvira, to je jedini način na koji možete postići ciljeve svoje aplikacije. Sljedeći okviri ne pružaju Objective-C klase:

  • Audio Toolbox

  • CFNetwork

  • Jezgra MIDI

  • Temeljni tekst

  • Usluga imenika (kao što su LDAP i Open Directory)

  • Sigurnost

Ako želite stvoriti aplikacije koje mogu u potpunosti iskoristiti značajke OS X, morate biti spremni podržati korištenje knjižnica kodova koji nisu Objective-C.

C++ kod u Objective-C Macintosh aplikacijama

Objective-C pruža objektno orijentirane značajke za razvoj Macintosh aplikacija, kao što su nasljeđivanje i polimorfizam. Jezik se temelji na programskom jeziku C; stoga možete koristiti svoje znanje programiranja C za kodiranje unutar Objective-C. Objective-C++ je mehanizam za premošćivanje koji omogućuje Objective-C izvornim modulima da rade s Objective-C++ klasama, koje se mogu kompilirati i povezati s C++ knjižnicama koda.

Sljedeći jednostavan primjer kvadratne matrice prikazuje sadržaj C++ datoteke zaglavlja za klasu Matrix. Klasa Matrix dolazi sa standardnim konstruktorom i destruktorom za klasu C++, a metode su ono što biste očekivali za osnovni kvadratni matrični objekt:

razred Matrix
{
javnost:
    Matrica (int inSize);
    virtualni ~Matrix();
    int getSize( void);
    int getDeterminant( void);
    void setElement( int inRow, int inCol, int inValue);
    int getElement( int inRow, int inCol);
    Operator matrice+( const Matrix& inAddend );
privatni:
    int m_veličina;
    int[][] m_elementi;
};

Da biste koristili Objective-C++, vaši moduli klase Objective-C++ moraju koristiti ekstenziju datoteke .mm. Ovo govori Xcode-ovom prevodiocu da se klasa treba prevesti korištenjem Objective-C++, što će vašoj klasi omogućiti korištenje ključnih riječi C++ jezika. Koristeći Objective-C++, vaša aplikacija može stvoriti Matrix objekt za izvođenje osnovnih operacija, kao što je dodavanje dva Matrix objekta zajedno. Ovo pretpostavlja da je izvorni modul Objective-C++ #importirao datoteku C++ Matrix.h:

- (void)addTwoMatrices
{
    Matrix matrixOne(3); // 3x3 matrica
    Matrica matricaDva(3); // drugo
    int indeks reda = 0;
    int colIndex = 0;
    za (indeks reda=0; indeks reda<3; ++indeks redaka)
    {
        za (colIndex=0; colIndex<3; ++colIndex)
        {
            // postaviti svoje elemente matrice na njihove vrijednosti
            matrixOne.setElement( rowIndex, colIndex, XXX);
            // postavlja elemente matrice dva na neke druge vrijednosti
            matrixTwo.setElement( rowIndex, colIndex, YYY );
        }
    }
    Zbroj matrice matrice = matricaJedan + matricaDva;

Uz Objective-C++, vaše aplikacije mogu iskoristiti prednosti svih dostupnih biblioteka trećih strana napisanih za C++.


Za starije osobe: Kako umetnuti isječak u PowerPoint slajd

Za starije osobe: Kako umetnuti isječak u PowerPoint slajd

Clip art je unaprijed nacrtana generička umjetnička djela, a Microsoft uz svoje proizvode sustava Office besplatno nudi mnoge datoteke s isječcima. Možete umetnuti isječke u svoj PowerPoint raspored slajda. Najlakši način za umetanje isječaka je korištenje jednog od rezerviranih mjesta na rasporedu slajda: Prikažite slajd koji sadrži isječak […]

Za starije: Kako ispuniti boju u Microsoft Excelu

Za starije: Kako ispuniti boju u Microsoft Excelu

Boja ispune — također se naziva sjenčanje — boja je ili uzorak koji ispunjava pozadinu jedne ili više ćelija radnog lista programa Excel. Primjena sjenčanja može pomoći očima čitatelja da prate informacije na stranici i može dodati boju i vizualni interes radnom listu. U nekim vrstama proračunskih tablica, kao što je registar čekovne knjižice, […]

Dodavanje novih kontakata u Zakon! 2005

Dodavanje novih kontakata u Zakon! 2005

Na najjednostavnijoj razini, glavna svrha ACT-a! služi kao mjesto za pohranu svih kontakata s kojima svakodnevno komunicirate. Možete dodavati i uređivati ​​sve svoje kontakte iz prozora s pojedinostima o kontaktu jer sadrži sve informacije koje se odnose na jedan određeni zapis i […]

Discord For LuckyTemplates Cheat Sheet

Discord For LuckyTemplates Cheat Sheet

Upotrijebite ovaj Cheat Sheet kako biste odmah uskočili u korištenje Discorda. Otkrijte korisne Discord botove, aplikacije koje možete integrirati i savjete za intervjuiranje gostiju.

OpenOffice.org za LuckyTemplates Cheat Sheet

OpenOffice.org za LuckyTemplates Cheat Sheet

Uredski paket OpenOffice.org ima mnogo alata koji olakšavaju radni život. Kada radite u OpenOffice.org, upoznajte funkcijsku alatnu traku (koja izgleda prilično isto u svim aplikacijama) i glavne gumbe alatne trake za pomoć s osnovnim naredbama za većinu zadataka.

Stroj za bombe Alana Turinga

Stroj za bombe Alana Turinga

Stroj Bombe Alana Turinga nije bio nikakav oblik umjetne inteligencije (AI). Zapravo, to čak i nije pravo računalo. Razbio je kriptografske poruke Enigme, i to je to. Međutim, to je Turingu pružilo hranu za razmišljanje, što je na kraju dovelo do rada pod naslovom “Computing Machinery and Intelligenceâ€?? koju je objavio 1950-ih koja opisuje […]

Standardni hardverski nedostaci za umjetnu inteligenciju

Standardni hardverski nedostaci za umjetnu inteligenciju

Mogućnost stvaranja modularnog sustava ima značajne prednosti, posebno u poslovanju. Mogućnost uklanjanja i zamjene pojedinačnih komponenti održava troškove niskim, a istovremeno dopušta postepena poboljšanja i brzine i učinkovitosti. Međutim, kao i kod većine stvari, nema besplatnog ručka. Modularnost koju pruža Von Neumannova arhitektura dolazi s nekim […]

10 stvari koje treba i ne treba raditi pri korištenju QuarkXPressa

10 stvari koje treba i ne treba raditi pri korištenju QuarkXPressa

Kad biste o QuarkXPressu morali odabrati deset lako zaboravljivih, ali iznimno korisnih stvari koje ćete zapamtiti, dragi čitatelju, one na sljedećem popisu bile bi to. Namaste. Razgovarajte sa svojim komercijalnim pisačem Svi projekti ispisa počinju i završavaju s pisačem. To je zato što samo tiskari znaju svoja ograničenja i tisuće načina na koje projekt može biti […]

Porijeklo Bitcoina

Porijeklo Bitcoina

Najvažniji aspekt bitcoina može biti koncept iza njega. Bitcoin je kreirao programer Satoshi Nakamoto. Umjesto da pokušava osmisliti potpuno novi način plaćanja kako bi srušio način na koji svi plaćamo stvari online, Satoshi je uvidio određene probleme s postojećim sustavima plaćanja i htio ih je riješiti. Koncept […]

Kako zaštititi svoju privatnost kada koristite Bitcoin

Kako zaštititi svoju privatnost kada koristite Bitcoin

Određena razina anonimnosti vezana je uz korištenje bitcoina i digitalne valute općenito. Možete li to označiti kao "dovoljno anonimno" osobno je mišljenje. Postoje načini da zaštitite svoju privatnost kada koristite bitcoin za premještanje sredstava, ali oni zahtijevaju malo truda i planiranja: možete generirati novu adresu za […]