Hogyan működik az automatizált OS X, építészet letölthető bundle-csomagokat, alma, Xcode fejlesztői

Építészet Bundle terhelt csomagokat

Automator kérelem alapja az építészet köteg terhelt csomagokat. Betölti a letölthető csomag okait cselekvés és végrehajtja a kódot, amely tartalmazza a sorozat által meghatározott jelenlegi munkafolyamat, fordítására adatfolyamok egyik tevékenységből a másikba.

Minden akciódús, mint a letölthető csomagot, vagy abban az esetben, AppleScript intézkedések alapján a lehetséges letölthető csomagok. A letölthető csomag tartalmazza források különböző formái, és tipikusan a bináris, de ő nem tudja végrehajtani ezt a kódot is. Belső szerkezet Kakaó bundle-csomag képviselt olyan formában, hogy „megérti” NSBundle objektumot. Segítségével NSBundle tárgy, az alkalmazás vagy a könyvtár betölthet erőforrások és a kód letöltött csomagok futásidőben, és integrálja azokat a kódot, amely már tartalmaz. Letölthető köteg-csomagok lényegében plug-in architektúra.

Amikor fut, Automator azonnal beolvassa a sor a csomagot, és távolítsa el az információt a tulajdonságok listája az egyes csomagok (info.plist) a szükséges információk megjelenítéséhez, és használatra történő előkészítésére. Automator (formájában letölthető csomag) vannak tárolva egy szabványos fájlrendszer helyeken:

/ System / Library / Automator - Apple Megadott akciók

/ Library / Automator - Egyéb intézkedések az összes felhasználó számára

/ Library / Automator - Egyéb intézkedések az aktuális felhasználó

Automator is keresi az intézkedéseket, amelyek tárolják a köteg-csomagokat minden regisztrált alkalmazásokat.

Amikor elindult, Automator is letölti az Mach-O-kódot, amely azt állapítja meg, a csomag-akció, amely ebben az esetben az Objective-C-akció csak az arra jogosult külső hivatkozások ebben a folyamatban. Ha a kereset azon a célkitűzésen alapul-C, AMBundleAction például (vagy alosztálya ennek az osztálynak) a tömörítetlen NIB. Ha azonban a kereset teljes épül AppleScript vagy shell script, Automator helyett megtartja utalás a csomag, hiszen Mach-O kódot letölteni. Amikor a felhasználó magával rántja a kereset Automator munkafolyamatok először, az alkalmazás betölti a cselekvés, hogy a hegye fájl kicsomagolása, és megjeleníti a tevékenység típusától.

új munkafolyamat

Amikor a felhasználó létrehoz egy új munkafolyamat húzva egy vagy több intézkedés az elrendezés a munkafolyamat automatizáló csinál néhány dolgot:

Ha a kereset alapul AppleScript AMAppleScriptAction ez létrehoz egy példányt, hogy a tulajdonos a csomag, és betölti a forgatókönyvet, így AppleScript Studio végre valami elindulni. Ha a kereset alapul héjparancsfájlról Automator helyett teremt AMShellScriptAction fokon.

Ő kap egy ötlet tartalmat a cselekvés csomagot, és megjeleníti azt az intézkedés formáját területén munkafolyamat beállítása alapértelmezett értékek szöveges mezők és vezérlők meghatározott AMDefaultParameters ingatlan lépéseket.

Kivonat a archív munkafolyamat

Miközben a munkafolyamatok vagy másolás vágólapon keresztül, a munkafolyamatok és minden fellépése archiválja. Automator okoz writeToDictionary módszer: az egyes intézkedések mellett az eljárást vezetett a szótárban módosítható paraméterek fellépés és az egyéb információkat. Action lehet választani, hogy módosítsa a tartalmát a szótárban, mielőtt visszatért writeToDictionary. A kombinált hatása szótárak egyes munkafolyamat kódolt és archivált.

Miután az összes lépést a munkafolyamat újrainicializálódnak az archívumból, a munkafolyamat készen áll a használatra. A felhasználó kiválaszthatja cselekvési lehetőségeket, és futtassa a munkafolyamatot.

Programozott következményei letöltött csomagok

Hozzáférés a Bundle-csomag

Az egyik kérdés a csomag fakad a különbség az alap csomag alkalmazások, mint automatizált és csomagokat, amelyek a letöltött alkalmazások. Ha zapoprosite fő csomag akció, például a kódban:

NSBundle * theBundle = [NSBundle mainBundle];

akkor kap a fő alkalmazási csomag Automator helyett intézkedéscsomagot hívó mainBundle. Mert a csomag, akkor küldje el az üzenetet, hogy a csomag objektum akció (amely, mint általában, ő hajtja végre a műveleti kódot):

NSBundle * theBundle = [self köteg];

köteg módszert bejelentett AMBundleAction osztály, minden olyan tevékenységet, amely örökölt egy osztály, amely közvetlenül vagy közvetve

Unzipping a fájlt tollhegy

Cocoa programokat gyakran végrehajtott awakeFromNib módszer (kollégája AppleScript felvezető ébren tollhegy csapat). awakeFromNib módszer az úgynevezett amikor tárgyak NIB fájlt a program már kicsomagolni. Ez adja a program a lehetőséget, hogy végre az inicializálás, amely megköveteli a jelenlétét minden kivont archív objektumokat.

Azonban awakeFromNib módszer az úgynevezett amikor automatizált indított. Ekkor Automator fellépés szól minden bináris kódot a szokásos helyeken automatizált közvetlenül csomagolja a tárgyak a tollhegy fájlt, amelyet közvetlen tulajdonában. Azonban ezek a létesítmények nem tartoznak tárgyak a tollhegy fájlokat akció. Action tollhegy fájl betöltése, és a tárgyak nem lett kicsomagolva, amíg a felhasználók nem húzza át a keresetet a munkafolyamatban. Ha azt szeretnénk, hogy inicializálni, amelyek jelenlétét igényli a tárgyakat és kapcsolatok a tollhegy fájlt a cselekvés, eljárás végrehajtására, ehelyett nyitott awakeFromNib.

névtér

Objective-C osztály határozza meg a névteret módszerek és például változók, amelyben kijelenti,. Ebben a tekintetben, a módszerek és változók azonos nevű más osztályokba nem okoznak konfliktust a folyamatban. Ugyanakkor a nevét az osztály létezik neve által elfoglalt minden osztályban betöltött folyamatot. Ezen kívül minden globális szimbólumot (például, függvények és adattípusok) szintén az azonos nevű helyet a folyamatot.

Mert Automator, építészetével terhelt csomagokat (vagy plug-in), annak valószínűsége, hogy egy potenciális névütközéshez, és így a valószínűsége -escaping futásidejű jelentős. Automator potenciálisan letölteni több száz tevékenységek a különböző forrásokból származó, például, ha a két osztály akciók ugyanaz a neve, vagy állapítsa meg egy szövegben az azonos nevű, ott van a potenciális összeférhetetlenség nevek amennyiben ezek az intézkedések töltik automatizált.

Annak elkerülése érdekében, névadási konfliktusok ajánlott rendelni egy előtagot minden osztály és típusú globális, amelyek jellegzetes, amennyire csak lehetséges. Például, ha a cég neve Acme meg lehetett hívni az osztály AC_FilterImages.

streaming építészet

Hogy javítsa a teljesítményt és stabilitást ad AppleScript intézkedések alapján a forrásokhoz való hozzáférés, mint a standard addíciós, Automator egy streaming architektúra, amely hozza a program különféle tevékenységeket egy külön téma. Automator indít munkafolyamat a másodlagos áramlási (azaz, áramlás, más, mint a fő áramlási). Azonban kezdi az akciót minden más patak, attól függően, hogy a kereset alapul, AppleScript vagy Objective-C:

  • Ha a kereset alapul AppleScript, fut a fő téma. A megvalósítás lehetővé teszi a felhasználóknak, hogy megszünteti az intézkedés ezen patak a stop gomb lenyomásával.
  • Amennyiben a kereset alapul Objective-C, vagy shell-script, fut a másodlagos patak.

Ez a streaming architektúra megszorításokat mindkét irányban az írás intézkedések alapja AppleScript és Objective-C. Ha a kereset alapul AppleScript segítségével do shell script parancsot. A felhasználói felület nem válaszol, amíg a script teljes; az egyetlen módja a felhasználók törölni, nyomja meg a Command-időszakban. Ha Objective-C akció kirakatai, meg kell csinálni a fő stream olyan módszerrel, mint például performSelectorOnMainThread: withObject: waitUntilDone :.

osztályok Automator

Automator a technológia nem csak az alkalmazás és annak intézkedéseit, de automatizált könyvtár (Automator.framework). Könyvtár hajtja végre a legtöbb általános viselkedését a cselekvés, és egy közös interfészt által definiált négy osztályba: AMAction, AMBundleAction, AMAppleScriptAction és AMShellScriptAction. Ezek az osztályok hierarchikusan kapcsolódó (az öröklés), az alábbiak szerint.

Hogyan működik az automatizált OS X, építészet letölthető bundle-csomagokat, alma, Xcode fejlesztői

AMBundleAction osztály örökli közvetlenül AMAction és biztosítja a konkrét megvalósítására. AMBundleAction meghatározza a felület és az általános viselkedése intézkedések a letölthető csomagot. AMBundleAction tárgyak három fő tulajdonsága van:

Bundle-csomag kidolgozott intézkedések bemutatásával a rendelkezésre álló erőforrások és a csomag lehetőségek állnak rendelkezésre a cselekvésre. Ezek kiterjesztése a letölthető akció csomag úgyhogy AppleScript szkriptek vagy szkriptek, hogy ellenőrizzék az intézkedés a logika helyett az Objective-C kódot (bár AppleScript, Objective-C, és még a shell script kódot lehet keverni a fellépés végrehajtásához). Az egyetlen kiút az AMAppleScriptAction OSAScript tárgy, amely egy script alapértelmezés szerint ez a kimenet be van állítva egy objektumot reprezentáló main.applescript.

Hozhat létre saját al-osztály az elmúlt két szintje Automator osztály hierarchia, azaz AMBundleAction le, hogy tárgyak tulajdonságait és képességeit, mint amire szüksége van. Ha azt szeretnénk, hogy hozzon létre egy letölthető csomag csomag akció, akinek a viselkedése határozza meg a programozási nyelv eltér AppleScript, Perl, Python, shell script, akkor hozzon létre egy alosztálya AMBundleAction.

Elvileg a két fő külső tényezők az intézkedések input objektumok, amelyek által benyújtott korábbi műveletet (ha van ilyen), és az alapértelmezett átjáró vezérlők használatával és a szöveges mezőkben az intézkedés formáját. Másolás AMBundleAction álló bemeneti objektum annak végrehajtása runWithInput: fromAction: error: és fogadja paraméterek közvetlenül a felhasználói felületen keresztül a mechanizmus Cocoa kötések. A fellépés alapú AppleScript (például képviselők AMAppleScriptAction), bemeneti funkciók több egyértelmű. Előfordulnak formájában továbbított értékek távon kezelő. az alábbiak szerint:

Hogyan működik az automatizált OS X, építészet letölthető bundle-csomagokat, alma, Xcode fejlesztői