Vývoj aplikací pro Mac pro LuckyTemplates Cheat Sheet

Vývoj aplikací pro Macintosh vyžaduje kreativitu, dovednosti programování Objective-C, určitou trpělivost a dobrou pomoc s vytrvalostí při implementaci, vylepšování a poskytování vaší aplikace pro Macintosh v dobrém provozním stavu vašim uživatelům. Na své cestě do tohoto cíle narazíte na několik výzev, které prověří vaše schopnosti programování a řešení problémů. Musíte se vypořádat (mimo jiné) s používáním delegátů k implementaci zpětných volání aplikací; používání non-Objective-C frameworků od Apple; a začlenění kódu C++ do vašich aplikací.

Implementace zpětných volání v aplikacích Macintosh

Vývoj aplikací pro Macintosh využívá zpětná volání, aby umožnil systému Mac OS X spouštět kód ve vaší aplikaci pro konkrétní operace. Pokud vytváříte standardní aplikaci na bázi okna nebo dokumentu pro Macintosh, úplně první kód, který OS X spustí, je v jedné z následujících metod zpětného volání, které musíte pro svou aplikaci vytvořit, v závislosti na návrhu aplikace:

  • Aplikace založené na okně: (void)applicationDidFinishSpuštění:(NSNotification*)aNotification

  • Aplikace založené na dokumentech: (void)windowControllerDidLoadNib:(NSWindowController*)windowController

Zpětné volání je jednoduše metoda, kterou OS nakonec provede, když se pokouší dodat nebo načíst informace z vaší aplikace. Kód vaší aplikace spustí metodu pro třídu kakaa, kde vaše aplikace bude mít příležitost poskytnout název metody jedné z vašich tříd, která má být volána na objektu třídy, kterou bude vaše aplikace muset poskytnout.

Delegát je objekt pomocníka, který třída Cocoa používá k rozšíření funkčnosti třídy tím, že umožňuje implementovat kód, který třída Cocoa bude spouštět za určitých okolností. Třída Cocoa kontroluje svůj objekt delegáta (pokud byl přiřazen), zda delegát poskytuje implementaci konkrétní metody. Pokud má delegát tuto metodu, třída Cocoa tuto metodu provede; pokud delegát neimplementuje tuto konkrétní metodu, třída Cocoa buď použije vlastní výchozí metodu, nebo zaprotokoluje chybu. Většina delegátů musí začlenit konkrétní protokol, který určuje, jaké metody mohou implementovat; delegáti vašeho kódu musí používat metody implementace ze specifického protokolu, který delegát očekává.

Zde jsou některé z objektů Cocoa, které mohou používat delegáty ke spuštění vašeho kódu:

  • NSTableView. NSTableView přijímá delegáta, který se řídí protokolem NSTableViewDelegate. To zahrnuje 20 až 30 metod, které může objekt delegáta vaší aplikace implementovat, aby podpořily potřebu vaší aplikace vědět, co NSTableView dělá. Existují metody, které budou volány ve vaší aplikaci, když potřebuje znát akci a reagovat na ni, například když uživatel provede výběr v tabulce nebo když se změní velikost sloupce.

  • Aplikace NSA. Můžete přiřadit NSApplicationDelegate ke zpracování některých metod, které instance NSApplication (vaše aplikace) obdrží. Tyto metody lze volat těsně před nebo těsně poté, co vaše aplikace spustí jinou metodu, aby mohla být vaše aplikace připravena.

  • NSWindow. NSWindowDelegate přiřazené k jednomu z oken vaší aplikace umožní vaší aplikaci reagovat na změny velikosti, přesunutí nebo jiné události uživatele.

  • NSMenu. Implementujete NSMenuDelegate pro podporu událostí, ke kterým dochází, když uživatel interaguje s nabídkami ve vaší aplikaci.

Non-Objective-C Frameworks v aplikacích Macintosh

Apple poskytuje mnoho frameworků pro vývoj aplikací pro Macintosh (knihoven kódů), které může vaše aplikace volat k provádění tisíců operací v OS X. Mnoho z těchto frameworků, jako je sada PDF, se skládá z tříd Objective-C, ze kterých může vaše aplikace vytvářet a používat objekty ve svých aplikacích. Některé z těchto rámců jsou však pouze knihovny funkcí, které může vaše aplikace provádět.

Rámec CFNetwork je například sada funkcí, které může vaše aplikace používat k provádění vyladěných síťových připojení. Třída NSURL poskytuje dobrou sadu základních síťových operací, které jsou skvělé pro získávání dat pomocí adresy URL. Pokud vaše aplikace vyžaduje větší kontrolu nad síťovou komunikací, kterou spouští, budete muset použít rámec CFNetwork a jeho funkce. Následující kód můžete použít k přípravě požadavku HTTP pro přenos na konkrétní URL:

CFStringRef httpBody = CFSTR( ");
CFStringRef headerFieldName = CFSTR( "Cookie" ); // přidat konkrétní cookie k požadavku HTTP
CFStringRef headerFieldValue = CFSTR( "loginID=moje_uživatelské_jméno; heslo=moje_heslo;" );
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( požadavek, httpBody );
// přidejte sušenku
CFHTTPMessageSetHeaderFieldValue( požadavek, headerFieldName, headerFieldValue);
CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage( požadavek );

Jakmile váš kód bude mít serializovaný požadavek, může vaše aplikace otevřít stream pro zápis, aby doručila požadavek na místo určení.

Všechny frameworky Apple založené na C poskytují sadu funkcí pro provádění tohoto typu programování na nižší úrovni. Váš kód bude složitější, ale Apple neposkytuje třídy Objective-C pro všechny své rámce. Pokud skutečně potřebujete funkce dostupné v jednom z těchto rámců, je to jediný způsob, jak dosáhnout cílů své aplikace. Následující rámce neposkytují třídy Objective-C:

  • Audio Toolbox

  • CFNnetwork

  • Jádro MIDI

  • Základní text

  • Adresářová služba (například LDAP a Open Directory)

  • Bezpečnostní

Pokud chcete vytvářet aplikace, které dokážou plně využít funkcí OS X, musíte být připraveni podporovat použití knihoven kódů, které nejsou Objective-C.

C++ kód v Objective-C Macintosh aplikacích

Objective-C poskytuje objektově orientované funkce pro vývoj aplikací pro Macintosh, jako je dědičnost a polymorfismus. Jazyk je založen na programovacím jazyce C; proto můžete využít své znalosti programování v C k kódování v rámci Objective-C. Objective-C++ je přemosťovací mechanismus, který umožňuje zdrojovým modulům Objective-C pracovat s třídami Objective-C++, které lze kompilovat a propojovat s knihovnami kódů C++.

Následující jednoduchý příklad čtvercové matice ukazuje obsah hlavičkového souboru C++ pro třídu Matrix. Třída Matrix je dodávána se standardním konstruktorem a destruktorem pro třídu C++ a metody jsou takové, jaké byste očekávali u objektu se základní čtvercovou maticí:

třídy Matrix
{
veřejnost:
    Matrix( int inSize );
    virtuální ~Matrix();
    int getSize( void );
    int getDeterminant( void );
    void setElement( int inRow, int inCol, int inValue );
    int getElement( int inRow, int inCol );
    Maticový operátor+( const Matrix& inAddend );
soukromé:
    int m_velikost;
    int[][] m_elements;
};

Chcete-li používat Objective-C++, vaše moduly třídy Objective-C++ musí používat příponu souboru .mm. To říká kompilátoru Xcode, že třída má být zkompilována pomocí Objective-C++, což vaší třídě umožní používat klíčová slova jazyka C++. Pomocí Objective-C++ by vaše aplikace mohla vytvořit objekt Matrix pro provádění základních operací, jako je přidání dvou objektů Matrix dohromady. To předpokládá, že zdrojový modul Objective-C++ #importoval soubor C++ Matrix.h:

- (void)addTwoMatrices
{
    Maticová maticeJedna( 3 ); // matice 3x3
    Maticová maticeDva( 3 ); // další
    int rowIndex = 0;
    int colIndex = 0;
    for (rowIndex=0; rowIndex<3; ++rowIndex)
    {
        for (colIndex=0; colIndex<3; ++colIndex)
        {
            // nastavení prvků matice na jejich hodnoty
            matrixOne.setElement( rowIndex, colIndex, XXX );
            // nastaví prvky matice dva na nějaké jiné hodnoty
            matrixTwo.setElement( rowIndex, colIndex, YYY );
        }
    }
    Maticová maticeSoučet = maticeJedna + maticeDva;

S Objective-C++ mohou vaše aplikace využívat všechny dostupné knihovny třetích stran napsané pro C++.


Recenzia Snagit 2018 Čo je nové od verzie 13

Recenzia Snagit 2018 Čo je nové od verzie 13

TechSmith Snagit je náš obľúbený softvér na úpravu snímok obrazovky a obrázkov. Pozrite si nové funkcie v Snagit 2018!

8 online nástrojov na kreslenie diagramov a vývojových diagramov

8 online nástrojov na kreslenie diagramov a vývojových diagramov

Potrebujete vytvoriť diagramy alebo vývojové diagramy a nechcete inštalovať ďalší softvér? Tu je zoznam online nástrojov na vytváranie diagramov.

Spotify nemôže prehrať aktuálnu skladbu? Ako opraviť

Spotify nemôže prehrať aktuálnu skladbu? Ako opraviť

Mať dom plný bezdrôtovo pripojených zariadení a streamovacích služieb, ako je Spotify, je skvelé, kým veci nefungujú a nenájdete zaujímavé riešenia.

Čo je NVMe M.2 SSD a aký je rýchly?

Čo je NVMe M.2 SSD a aký je rýchly?

NVMe M.2 SSD je najnovšia technológia počítačových pevných diskov. Čo to je a aká je rýchlosť v porovnaní so staršími pevnými diskami a SSD (Solid State Drive)?

Sonos vs. AirPlay: Prečo som si vybral AirPlay pre zvuk celého domu

Sonos vs. AirPlay: Prečo som si vybral AirPlay pre zvuk celého domu

Sonos je správne fungujúce audio riešenie na streamovanie od 400 USD za dva reproduktory. Ale pri správnom nastavení môže byť AirPlay zadarmo. Pozrime sa na podrobnosti.

Aplikácia Zálohovanie a synchronizácia Google nahrádza Fotky a Disk

Aplikácia Zálohovanie a synchronizácia Google nahrádza Fotky a Disk

Zálohovanie a synchronizácia Google je nová aplikácia, ktorá sa synchronizuje s aplikáciami Fotky a Disk. Čítajte ďalej a zistite, ako si stojí v porovnaní s OneDrive, Dropbox, Backblaze a Crashplan.

Rezanie káblov: Recenzia MyIPTV so SOPlayerom

Rezanie káblov: Recenzia MyIPTV so SOPlayerom

MyIPTV je služba na strihanie káblov, ktorá využíva aplikáciu SOPlayer pre viacero platforiem a poskytuje televíziu, filmy a iné formy médií za platené

Logitech Illuminated Living-Room Keyboard K830

Logitech Illuminated Living-Room Keyboard K830

Spoločnosť Logitech nedávno vydala svoju klávesnicu Illuminated Living-Room Keyboard K830, ktorá je určená ako spoločník domácej zábavy. Tu je naša recenzia jednotky.

Aktualizácia CloudHQ: Rýchlejšia synchronizácia, úprava súborov Dropbox z Dokumentov Google

Aktualizácia CloudHQ: Rýchlejšia synchronizácia, úprava súborov Dropbox z Dokumentov Google

Tu je pohľad na aktualizáciu, ktorá bola nedávno vydaná pre CloudHQ a ako funguje. Čítajte ďalej a dozviete sa viac.

Čo je telefón OnePlus 6T Android?

Čo je telefón OnePlus 6T Android?

OnePlus 6T je prvotriedny kvalitný telefón s Androidom, ktorý sa predáva so zľavou v porovnaní s Apple iPhone, Google Pixel 3 alebo Samsung Galaxy S9.