A Snagit 2018 áttekintése Újdonságok a 13-as verzió óta
A TechSmith Snagit a kedvenc képernyőkép- és képszerkesztő szoftverünk. Tekintse meg a Snagit 2018 új funkcióit!
A Macintosh-alkalmazások fejlesztése kreativitást, Objective-C programozási készségeket, némi türelmet és kitartást igényel, hogy a Macintosh-alkalmazásokat jó állapotban implementálja, finomítsa és a felhasználókhoz eljuttassa. Az úti cél felé vezető úton olyan kihívásokkal kell szembenéznie, amelyek próbára teszik programozási és problémamegoldó képességeit. Meg kell birkóznia (többek között) a delegátusok használatával az alkalmazás-visszahívások megvalósításához; nem Objective-C keretrendszerek használata az Apple-től; és C++ kód beépítése az alkalmazásokba.
A Macintosh alkalmazásfejlesztés visszahívásokat használ, hogy lehetővé tegye a Mac OS X számára, hogy kódot hajtson végre az alkalmazáson belül bizonyos műveletekhez. Ha szabványos Macintosh ablak- vagy dokumentumalapú alkalmazást hoz létre, az OS X által végrehajtott legelső kód a következő visszahívási módszerek egyikében lesz, amelyeket az alkalmazás kialakításától függően létre kell hoznia az alkalmazáshoz:
Ablakalapú alkalmazások: (void)applicationDidFinishLaunching:(NSNotification*)aNotification
Dokumentum alapú alkalmazások: (void)windowControllerDidLoadNib:(NSWindowController*)windowController
A visszahívás egyszerűen egy olyan módszer, amelyet az operációs rendszer végül végrehajt, miközben megpróbál információt szolgáltatni vagy lekérni az alkalmazásból. Az alkalmazás kódja végrehajt egy metódust egy Cocoa osztályhoz, ahol az alkalmazásnak lehetősége lesz megadni az egyik osztály metódusának nevét, hogy meghívódjon az adott osztály egyik objektumára, amelyet az alkalmazásnak is biztosítania kell.
A delegátus egy segédobjektum, amelyet a Cocoa osztály az osztály funkcionalitásának kiterjesztésére használ azáltal, hogy lehetővé teszi olyan kód megvalósítását, amelyet a Cocoa osztály bizonyos körülmények között végrehajt. A Cocoa osztály ellenőrzi a delegált objektumát (ha hozzá van rendelve), hogy a delegált biztosít-e egy adott metódus megvalósítását. Ha a delegált rendelkezik ezzel a metódussal, a Cocoa osztály végrehajtja ezt a metódust; ha a delegált nem valósítja meg az adott metódust, a Cocoa osztály vagy egy saját alapértelmezett metódust használ, vagy hibát naplóz. A legtöbb küldöttnek be kell építenie egy bizonyos protokollt, amely meghatározza, hogy milyen módszereket alkalmazhat; a kód delegáltjainak a küldött által elvárt konkrét protokoll megvalósítási metódusait kell használniuk.
Íme néhány Cocoa objektum, amelyek delegátusokat használhatnak a kód végrehajtásához:
NSTableView. Az NSTableView olyan delegált fogad, aki engedelmeskedik az NSTableViewDelegate protokollnak. Ez 20–30 olyan metódust foglal magában, amelyeket az alkalmazás delegált objektuma megvalósíthat, hogy támogassa az alkalmazásnak tudnia, hogy mit csinál az NSTableView. Vannak olyan metódusok, amelyek akkor kerülnek meghívásra az alkalmazásban, amikor tudnia kell egy műveletet, és reagálnia kell rá, például amikor a felhasználó kiválaszt egyet a táblázatban, vagy ha átméretez egy oszlopot.
NSApplication. Hozzárendelhet egy NSApplicationDelegate-et néhány olyan metódus kezeléséhez, amelyet az NSApplication példány (az Ön alkalmazása) fog kapni. Ezeket a metódusokat közvetlenül azelőtt vagy közvetlenül azután hívhatják meg, hogy az alkalmazás végrehajt egy másik metódust, így az alkalmazás előkészíthető.
NSWindow. Az alkalmazás egyik ablakához hozzárendelt NSWindowDelegate lehetőséget ad az alkalmazásnak, hogy válaszoljon a felhasználó átméretezésére, áthelyezésére vagy egyéb ablakeseményekre.
NSMenu. Az NSMenuDelegate megvalósítása olyan események támogatására szolgál, amelyek akkor történnek, amikor a felhasználó interakcióba lép az alkalmazás menüivel.
Az Apple számos Macintosh alkalmazásfejlesztési keretrendszert (kódkönyvtárat) biztosít, amelyeket az alkalmazás meghívhat az OS X több ezer műveletének végrehajtásához. Sok ilyen keretrendszer, például a PDF Kit, Objective-C osztályokból áll, amelyekből az alkalmazás képes objektumokat hozhat létre és használhat az alkalmazásokon belül. E keretrendszerek némelyike azonban csak olyan függvénykönyvtár, amelyet az alkalmazás végrehajthat.
Például a CFNetwork keretrendszer olyan funkciók halmaza, amelyek segítségével az alkalmazás finomhangolt hálózati kapcsolatok létrehozására használhatja. Az NSURL osztály az alapvető hálózati műveletek jó készletét kínálja, amelyek nagyszerűek az adatok URL használatával történő lekéréséhez. Ha alkalmazásának nagyobb ellenőrzésre van szüksége az általa kezdeményezett hálózati kommunikáció felett, akkor a CFNetwork keretrendszert és annak funkcióit kell használnia. A következő kóddal elkészítheti a HTTP-kérést egy adott URL-re történő továbbításhoz:
CFStringRef httpBody = CFSTR( " ); CFStringRef headerFieldName = CFSTR( "Cookie" ); // konkrét cookie hozzáadása a HTTP-kéréshez CFStringRef headerFieldValue = CFSTR( "loginID=saját_felhasználónév; jelszó=saját_jelszó;" ); 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( kérés, httpBody ); // add hozzá a sütit CFHTTPMessageSetHeaderFieldValue( request, headerFieldName, headerFieldValue ); CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage( request );
Miután a kód megkapta a sorosított kérést, az alkalmazás megnyithat egy írási adatfolyamot, hogy a kérést a célállomásra kézbesítse.
Az összes C-alapú Apple keretrendszer rendelkezik funkciókkal az ilyen típusú alacsonyabb szintű programozás végrehajtásához. A kódja bonyolultabb lesz, de az Apple nem biztosít Objective-C osztályokat minden keretrendszeréhez. Ha valóban szüksége van az egyik keretrendszerben elérhető funkcionalitásra, csak így érheti el az alkalmazás céljait. A következő keretrendszerek nem biztosítanak Objective-C osztályokat:
Audio Toolbox
CFNetwork
Core MIDI
Alapszöveg
Címtárszolgáltatás (például LDAP és Open Directory)
Biztonság
Ha olyan alkalmazásokat szeretne létrehozni, amelyek teljes mértékben ki tudják használni az OS X funkcióit, készen kell állnia a nem Objective-C kódkönyvtárak használatának támogatására.
Az Objective-C objektumorientált funkciókat biztosít a Macintosh-alkalmazások fejlesztéséhez, mint például az öröklődés és a polimorfizmus. A nyelv a C programozási nyelven alapul; ezért használhatja C programozási ismereteit az Objective-C kódolásához. Az Objective-C++ egy hídmechanizmus, amely lehetővé teszi, hogy az Objective-C forrásmodulok együttműködjenek az Objective-C++ osztályokkal, amelyek lefordíthatják és összekapcsolhatják a C++ kódkönyvtárakat.
A négyzetmátrix alábbi egyszerű példája egy mátrix osztály C++ fejlécfájljának tartalmát mutatja be. A Matrix osztály tartalmazza a szabványos konstruktort és destruktort egy C++ osztályhoz, és a metódusok megegyeznek az alap négyzetmátrix objektumokkal szemben:
osztályú Mátrix { nyilvános: Mátrix( int inSize ); virtuális ~Matrix(); int getSize( void ); int getDeterminant( void ); void setElement( int inRow, int inCol, int inValue ); int getElement( int inRow, int inCol ); Mátrix operátor+( const Mátrix& inAddend ); magán: int m_size; int[][] m_elements; };
Az Objective-C++ használatához az Objective-C++ osztálymoduloknak .mm fájlkiterjesztést kell használniuk. Ez közli az Xcode fordítójával, hogy az osztályt az Objective-C++ használatával kell lefordítani, ami lehetővé teszi, hogy az osztály C++ nyelvi kulcsszavakat használjon. Az Objective-C++ használatával az alkalmazás létrehozhat egy Matrix objektumot az alapvető műveletek elvégzéséhez, például két Matrix objektum összeadásához. Ez azt feltételezi, hogy az Objective-C++ forrásmodul #importálta a C++ Matrix.h fájlt:
- (void)addTwoMatrices { Matrix matrixOne( 3 ); // 3x3 mátrix Mátrix mátrixTwo( 3 ); // egy másik int sorIndex = 0; int colIndex = 0; for (rowIndex=0; rowIndex<3; ++rowIndex) { for (colIndex=0; colIndex<3; ++colIndex) { // a mátrix elemeinek beállítása az értékükre matrixOne.setElement( rowIndex, colIndex, XXX ); // a kettes mátrix elemeit más értékekre állítja be matrixTwo.setElement( rowIndex, colIndex, YYY ); } } Mátrix mátrixSum = matrixOne + matrixTwo;
Az Objective-C++ segítségével alkalmazásai ki tudják használni az összes elérhető, harmadik féltől származó, C++ nyelvre írt könyvtár előnyeit.
A TechSmith Snagit a kedvenc képernyőkép- és képszerkesztő szoftverünk. Tekintse meg a Snagit 2018 új funkcióit!
Diagramokat vagy folyamatábrákat kell létrehoznia, és nem szeretne extra szoftvert telepíteni? Íme az online diagramkészítő eszközök listája.
Ha egy ház tele van vezeték nélkül csatlakoztatott eszközökkel és streaming szolgáltatásokkal, mint a Spotify, az nagyszerű, amíg a dolgok nem működnek, és érdekes megoldásokat nem talál.
Az NVMe M.2 SSD a legújabb számítógépes merevlemez-technológia. Mi ez, és milyen gyors a korábbi merevlemezekkel és szilárdtest-meghajtókkal (SSD) szemben?
A Sonos a jelenleg működő streaming audio megoldás, amely 400 dollártól indul két hangszóróért. De megfelelő beállítással az AirPlay ingyenes lehet. Tekintsük át a részleteket.
A Google Backup and Sync egy új alkalmazás, amely szinkronizálja a Fotókat és a Drive-ot. Olvassa el, hogy megtudja, hogyan áll szemben a OneDrive, a Dropbox, a Backblaze és a Crashplan.
A MyIPTV egy kábelvágó szolgáltatás, amely a SOPlayer alkalmazást több platformon használja, és televíziót, filmeket és egyéb médiát biztosít fizetős
A Logitech a közelmúltban kiadta az Illuminated Living-Room Keyboard K830-at, amelyet otthoni szórakoztatási társnak szántak. Íme az egységről szóló véleményünk.
Íme egy pillantás a CloudHQ-hoz nemrégiben kiadott frissítésre és annak működésére. Olvasson tovább, ha többet szeretne megtudni.
A OnePlus 6T egy prémium zászlóshajó-minőségű Android telefon, amely az Apple iPhone-hoz, a Google Pixel 3-hoz vagy a Samsung Galaxy S9-hez képest kedvezményes áron kapható.