„Mac“ programų kūrimas, skirtas „LuckyTemplates“ kodams

„Macintosh“ taikomųjų programų kūrimas reikalauja kūrybiškumo, „Objective-C“ programavimo įgūdžių, šiek tiek kantrybės ir malonaus atkaklumo, kad įdiegtumėte, patobulintumėte ir pateiktumėte savo „Macintosh“ programą gerai veikiančią savo vartotojams. Pakeliui į šią vietą susidursite su tam tikrais iššūkiais, kurie patikrins jūsų programavimo ir problemų sprendimo įgūdžius. Turite susitvarkyti su (be kita ko) delegatų naudojimu, kad įgyvendintumėte programų atgalinius iškvietimus; naudojant Apple ne Objective-C sistemas; ir įtraukti C++ kodą į savo programas.

Atgalinių skambučių įgyvendinimas „Macintosh“ programose

Kuriant „Macintosh“ programas naudojami atgaliniai skambučiai , kad „Mac OS X“ galėtų vykdyti kodą jūsų programoje tam tikroms operacijoms atlikti. Jei kuriate standartinę „Macintosh“ langu arba dokumentu pagrįstą programą, pirmasis kodas, kurį OS X vykdys, yra vienas iš toliau nurodytų atgalinio iškvietimo metodų, kuriuos turite sukurti savo programai, atsižvelgiant į programos dizainą:

  • Langų programos: (negalioja)applicationDidFinishLaunching:(NSNotification*)aNotification

  • Dokumentu pagrįstos programos: (void)windowControllerDidLoadNib:(NSWindowController*)windowController

Atgalinis skambinimas yra tiesiog metodas, kurį OS galiausiai vykdo, kai bando pateikti arba nuskaityti informaciją iš jūsų programos. Jūsų programos kodas vykdys „Cocoa“ klasės metodą, kuriame jūsų programa turės galimybę pateikti vienos iš jūsų klasių metodo pavadinimą, kad būtų iškviesta tos klasės objektu, kurį taip pat turės pateikti jūsų programa.

Delegatas yra pagalbininkas objektas, kuriame kakavos klasė naudoja pratęsti klasės funkcionalumą leidžia jums įgyvendinti kodas, kuris kakavos klasė atliks tam tikromis aplinkybėmis. „Cocoa“ klasė tikrina savo deleguotojo objektą (jei jis buvo priskirtas), ar delegatas įgyvendina konkretų metodą. Jei delegatas turi tą metodą, Cocoa klasė vykdo tą metodą; jei įgaliotasis neįgyvendina to konkretaus metodo, Cocoa klasė naudoja numatytąjį savo metodą arba registruoja klaidą. Dauguma delegatų turi įtraukti tam tikrą protokolą, kuris nustato, kokius metodus jie gali įgyvendinti; jūsų kodo įgaliotiniai turi naudoti diegimo metodus iš konkretaus protokolo, kurio deleguotasis tikisi.

Štai keletas „Cocoa“ objektų, kurie gali naudoti delegatus jūsų kodui vykdyti:

  • NSTableView. NSTableView priima delegatą, kuris paklūsta NSTableViewDelegate protokolui. Tai apima 20–30 metodų, kuriuos programos įgaliotasis objektas gali įdiegti, kad palaikytų jūsų programos poreikį žinoti, ką veikia NSTableView. Yra metodai, kurie bus iškviesti jūsų programoje, kai jai reikia žinoti ir reaguoti į veiksmą, pvz., kai vartotojas pasirenka lentelėje arba kai keičiamas stulpelio dydis.

  • NSApplication. Galite priskirti NSApplicationDelegate tvarkyti kai kuriuos metodus, kuriuos gaus NSApplication egzempliorius (jūsų programa). Šie metodai gali būti iškviesti prieš pat arba iškart po to, kai programa vykdo kitą metodą, kad būtų galima paruošti programą.

  • NSWindow. Vienam iš jūsų programos langų priskirtas NSWindowDelegate suteiks jūsų programai galimybę reaguoti į vartotojo dydžio keitimą, perkėlimą ar kitus lango įvykius.

  • NSMeniu. Įdiekite NSMenuDelegate, kad palaikytų įvykius, kurie įvyksta, kai vartotojas sąveikauja su jūsų programos meniu.

Ne Objective-C Frameworks Macintosh programose

„Apple“ teikia daug „Macintosh“ programų kūrimo schemų (kodų bibliotekų), kurias jūsų programa gali iškviesti, kad atliktų tūkstančius operacijų OS X. Daugelį šių sistemų, pvz., PDF rinkinį, sudaro „Objective-C“ klasės, iš kurių jūsų programa gali kurkite ir naudokite objektus savo programose. Tačiau kai kurios iš šių sistemų yra tik funkcijų, kurias gali vykdyti jūsų programa, bibliotekos.

Pavyzdžiui, CFNetwork sistema yra funkcijų rinkinys, kurį jūsų programa gali naudoti, kad būtų galima tiksliai suderinti tinklo ryšius. NSURL klasė suteikia gerą pagrindinių tinklo operacijų rinkinį, kuris puikiai tinka duomenims gauti naudojant URL. Jei programai reikia labiau valdyti jos inicijuojamus tinklo ryšius, turėsite naudoti CFNetwork sistemą ir jos funkcijas. Galite naudoti šį kodą, kad paruoštumėte HTTP užklausą perduoti tam tikru URL:

CFStringRef httpBody = CFSTR( " );
CFStringRef headerFieldName = CFSTR("slapukas"); // pridėti konkretų slapuką prie HTTP užklausos
CFStringRef headerFieldValue = CFSTR( "loginID=mano_vartotojo_vardas; slaptažodis=mano_slaptažodis;" );
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(užklausa, httpBody );
// pridėkite slapuką
CFHTTPMessageSetHeaderFieldValue(užklausa, antraštėslauko pavadinimas, antraštėslauko vertė );
CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage( request );

Kai jūsų kodas gaus nuoseklią užklausą, programa gali atidaryti rašymo srautą, kad užklausa būtų pristatyta į paskirties vietą.

Visose C pagrindu sukurtose Apple sistemose yra funkcijų rinkinys, skirtas tokio tipo žemesnio lygio programavimui atlikti. Jūsų kodas taps sudėtingesnis, tačiau „Apple“ neteikia „Objective-C“ klasių visoms savo sistemoms. Jei jums tikrai reikia funkcionalumo vienoje iš tų sistemų, tai vienintelis būdas pasiekti programos tikslus. Šios sistemos nepateikia Objective-C klasių:

  • Garso įrankių rinkinys

  • CFNetwork

  • Pagrindinis MIDI

  • Pagrindinis tekstas

  • Katalogų paslauga (pvz., LDAP ir atviras katalogas)

  • Saugumas

Jei norite sukurti programas, kurios gali išnaudoti visas OS X ypatybes, turite būti pasirengę palaikyti ne Objective-C kodų bibliotekų naudojimą.

C++ kodas Objective-C Macintosh programose

„Objective-C“ teikia į objektą orientuotas funkcijas, skirtas „Macintosh“ programų kūrimui, pvz., paveldėjimą ir polimorfizmą. Kalba yra pagrįsta C programavimo kalba; todėl galite naudoti savo C programavimo žinias koduodami Objective-C. Objective-C++ yra tilto mechanizmas, leidžiantis Objective-C šaltinio moduliams dirbti su Objective-C++ klasėmis, kurios gali kompiliuoti ir susieti su C++ kodų bibliotekomis.

Šis paprastas kvadratinės matricos pavyzdys rodo C++ antraštės failo, skirto Matrix klasei, turinį. Matricos klasėje yra standartinis C++ klasės konstruktorius ir destruktorius, o metodai yra tokie, kokių tikitės iš pagrindinio kvadratinės matricos objekto:

klasės Matrica
{
viešas:
    Matrica( int inSize );
    virtuali ~Matrica();
    int getSize( void );
    int getDeterminant( void );
    void setElement( int inRow, int inCol, int inValue );
    int getElement( int inRow, int inCol );
    Matricos operatorius+( const Matrica& inAddend );
privatus:
    int m_dydis;
    int[][] m_elementai;
};

Norint naudoti Objective-C++, jūsų Objective-C++ klasės moduliai turi naudoti failo plėtinį .mm. Tai nurodo „Xcode“ kompiliatoriui, kad klasė turi būti sudaryta naudojant „Objective-C++“, o tai leis jūsų klasei naudoti C++ kalbos raktinius žodžius. Naudodama „Objective-C++“ programa gali sukurti „Matrix“ objektą, kad atliktų pagrindines operacijas, pvz., pridėtų du „Matrix“ objektus. Daroma prielaida, kad Objective-C++ šaltinio modulis #importavo C++ Matrix.h failą:

- (negalioja) pridėti dvi matricas
{
    Matrica matrixOne(3); // 3x3 matrica
    Matricos matricaTwo( 3 ); // kitas
    int rowIndex = 0;
    int colIndeksas = 0;
    skirta (rowIndex=0; rowIndex<3; ++rowIndex)
    {
        skirta (colIndex=0; colIndex<3; ++colIndex)
        {
            // nustatyti matricos elementus į jų reikšmes
            matrixOne.setElement( rowIndex, colIndex, XXX );
            // nustatyti matricos du elementus į kai kurias kitas reikšmes
            matrixTwo.setElement( rowIndex, colIndex, YYY );
        }
    }
    Matricos matricos suma = matricaOne + matricaTwo;

Naudodami „Objective-C++“, jūsų programos gali pasinaudoti visomis turimomis trečiųjų šalių bibliotekomis, sukurtomis C++.


Senjorams: kaip įterpti iliustraciją į „PowerPoint“ skaidrę

Senjorams: kaip įterpti iliustraciją į „PowerPoint“ skaidrę

Iliustracija yra iš anksto nupieštas bendras meno kūrinys, o „Microsoft“ su „Office“ produktais nemokamai teikia daug iliustracijų failų. Galite įterpti iliustraciją į savo „PowerPoint“ skaidrės maketą. Lengviausias būdas įterpti iliustraciją yra naudoti vieną iš vietos rezervavimo ženklų skaidrės makete: Rodyti skaidrę, kurioje yra iliustracija […]

Senjorams: kaip užpildyti spalvą „Microsoft Excel“.

Senjorams: kaip užpildyti spalvą „Microsoft Excel“.

Užpildymo spalva (dar vadinama šešėliavimu) yra spalva arba raštas, užpildantis vienos ar kelių „Excel“ darbalapio langelių foną. Tamsinimas gali padėti skaitytojo akims sekti informaciją visame puslapyje ir suteikti darbalapiui spalvų bei vizualinio susidomėjimo. Kai kurių tipų skaičiuoklėse, pavyzdžiui, čekių knygelės registre, […]

Akte pridedami nauji kontaktai! 2005 m

Akte pridedami nauji kontaktai! 2005 m

Pačiame paprasčiausiu lygmeniu pagrindinis ACT tikslas! yra vieta, kur saugoti visus kontaktus, su kuriais bendraujate kasdien. Galite įtraukti ir redaguoti visus savo kontaktus iš kontaktinės informacijos lange, nes jame yra visa informacija, susijusi su vienu konkrečiu įrašu ir […]

Nesantaika „LuckyTemplates“ sukčiavimo lapas

Nesantaika „LuckyTemplates“ sukčiavimo lapas

Naudokite šį kodų lapą, kad pradėtumėte naudoti „Discord“. Atraskite naudingų „Discord“ robotų, programų, kurias galite integruoti, ir patarimų, kaip apklausti svečius.

OpenOffice.org, skirtas LuckyTemplates Cheat Sheet

OpenOffice.org, skirtas LuckyTemplates Cheat Sheet

OpenOffice.org biuro rinkinyje yra daug įrankių, palengvinančių darbo gyvenimą. Kai dirbate OpenOffice.org, susipažinkite su funkcijų įrankių juosta (kuri beveik visose programose atrodo vienodai) ir pagrindinius įrankių juostos mygtukus, kad gautumėte pagalbos su pagrindinėmis komandomis atliekant daugumą užduočių.

Alano Turingo bombų mašina

Alano Turingo bombų mašina

Alano Turingo Bombe mašina nebuvo jokia dirbtinio intelekto (AI) forma. Tiesą sakant, tai net nėra tikras kompiuteris. Tai sulaužė Enigma kriptografinius pranešimus, ir viskas. Tačiau tai suteikė Turingui peno apmąstymams, todėl galiausiai buvo parengtas straipsnis „Kompiuterinės mašinos ir intelektas“. kurį jis paskelbė šeštajame dešimtmetyje, kuriame aprašoma […]

Standartiniai dirbtinio intelekto aparatūros trūkumai

Standartiniai dirbtinio intelekto aparatūros trūkumai

Galimybė sukurti modulinę sistemą turi daug naudos, ypač versle. Galimybė pašalinti ir pakeisti atskirus komponentus sumažina sąnaudas ir leidžia laipsniškai pagerinti greitį ir efektyvumą. Tačiau, kaip ir daugumoje dalykų, nemokamų pietų nėra. Von Neumann architektūros teikiamas moduliškumas apima kai kuriuos […]

10 Ką daryti ir ko negalima naudojant QuarkXPress

10 Ką daryti ir ko negalima naudojant QuarkXPress

Jei jums reikėtų pasirinkti dešimt lengvai pamirštamų, bet nepaprastai naudingų dalykų, kuriuos reikia prisiminti apie QuarkXPress, toliau pateiktame sąraše, brangus skaitytojau, jie būtų tokie. Namaste. Pasikalbėkite su savo komerciniu spausdintuvu Visi spausdinimo projektai prasideda ir baigiasi spausdintuvu. Taip yra todėl, kad tik spausdintuvai žino savo apribojimus ir tūkstančius būdų, kaip projektas gali būti įgyvendinamas […]

Bitcoin kilmė

Bitcoin kilmė

Svarbiausias bitkoino aspektas gali būti jo koncepcija. Bitcoin sukūrė kūrėjas Satoshi Nakamoto. Užuot bandęs sukurti visiškai naują mokėjimo metodą, kad būtų panaikintas būdas, kuriuo mes visi mokame už daiktus internetu, Satoshi pastebėjo tam tikras esamų mokėjimo sistemų problemas ir norėjo jas išspręsti. Sąvoka […]

Kaip apsaugoti savo privatumą naudojant Bitcoin

Kaip apsaugoti savo privatumą naudojant Bitcoin

Tam tikras anonimiškumo lygis yra susietas su bitkoinų ir skaitmeninės valiutos naudojimu apskritai. Ar galite tai pažymėti kaip „pakankamai anonimišką“, yra asmeninė nuomonė. Yra būdų apsaugoti savo privatumą naudojant bitkoinus lėšoms perkelti, tačiau tam reikia pastangų ir planavimo: galite sugeneruoti naują adresą […]