Varje release av Xcode presenterar utvecklare med förbättrade verktyg för att hjälpa till att bygga sina appar. I årets release Xcode 6 introduceras nya sätt för utvecklare att designa och bygga sin programvara. I denna handledning skisserar jag de nya och förbättrade funktionerna i Xcode 6 och tittar på hur du kan använda dem.
Under årets WWDC introducerade Apple Swift, ett nytt programmeringsspråk för att utveckla programvara för sina enheter. I linje med detta kommer Xcode 6 med en ny funktion som heter Playgrounds som ger ett interaktivt arbetsområde där utvecklare kan skriva Swift-kod och få live feedback utan att behöva köra koden på en enhet eller simulator. Detta är ett fint komplement till Xcode, eftersom du nu kan experimentera med kod och få snabba resultat i realtid innan du integrerar det i din huvudkodbas.
Ett viktigt ämne vid årets WWDC var att bygga adaptiva applikationer. Istället för att bygga program som riktar sig mot specifika skärmstorlekar uppmuntras utvecklare att utveckla program som anpassar sig till den enhet de kör på oavsett skärmstorlek.
Detta är ett drag som startade ett par utgåvor med introduktionen av Auto Layout i IOS 6, vilket gör det möjligt för utvecklare att skapa appar som fungerar på både 3,5 och 4,0-skärmarna. Det har nu förbättrats ytterligare för att göra det möjligt för iOS-utvecklare att skapa appar som körs på alla stödja iPhones, inklusive den nya 4,7 "iPhone 6 och 5,5" iPhone 6 Plus och iPads använder samma kodbas.
Gränssnittsbyggare har genomgått stora förändringar som möjliggör utveckling av sådana adaptiva appar. Nya funktioner har också lagts till som förbättrar användargränssnittets designprocess. Vi kommer att titta på de här nya ändringarna nästa.
Storleksklasser definierar dukstorlek som används i layouter. De låter dig ange hur programmets användargränssnitt ändras när den tillgängliga storleken på din visningsstyrenhet ändras. Detta gör det möjligt att ha en enhetlig storyboard när man bygger en universell applikation. Tidigare var du tvungen att designa två separata storyboards, en för iPad och en för iPhone.
En storleksklass identifierar en relativ mängd visningsutrymme för höjden (vertikal dimension) och bredd (horisontell dimension). Det finns för närvarande två storleksklasser, kompakt och regelbunden. En iPhone i porträtt har till exempel en kompakt bredd och vanlig höjd. En iPad kommer att ha en vanlig bredd och höjd i både stående och liggande riktningar.
Men du bör notera att en storleksklass inte nödvändigtvis kartlägger en enhet i en orientering. En iPad kan till exempel ha en vy med en iPhone-stillayout (en kompakt horisontell och en vanlig vertikal storleksklass) när den presenteras på ett mindre utrymme på enheten och en iPad-stillayout (en vanlig horisontell och en vanlig vertikal storleksklass ) när tillgängligt utrymme är större.
Du ändrar storleksklasser genom att använda Storleksklasser kontroll nära layoutverktygsfältet längst ner i Interface Builder-kanalen. Gränssnittsbyggare börjar dig ut i några bredd och några klasshöjd där du kan lägga ut vanliga användargränssnittskomponenter och begränsningar för olika skärmstorlekar och orienteringar. Därefter uppdaterar du de delar som behöver ändras när den tillgängliga skärmstorleken ändras genom att ändra ändringar i användargränssnittet i olika storleksklasser.
Xcode 6 introducerar adaptiva segustyper som är mer lämpliga för de nya adaptiva layouterna eftersom de presenterar åsikter olika beroende på miljön de körs i. Till exempel använder man Visa detaljer med en delad vy på en iPad kommer att ersätta detaljerna, men på en iPhone kommer den att trycka detaljet åt sidan till mästaren. Några av de gamla segrena, som push och modal, är nu avskilda.
Interface Builder-duken är mer interaktiv än någonsin. Tidigare måste du köra din app för att se ändringar relaterade till anpassade objekt, anpassade teckensnitt och lokalisering. Nu kan du välja anpassade teckensnitt från Font-Builder-fontväljaren och få dem att dyka upp i Interface Builder-duken.
Du kan även skapa anpassade objekt och få dem att göra på Interface Builder-duken. Du gör det genom att skapa en anpassad ram, lägga till din anpassade klass till det målet och markera den klassen med @IBDesignable
flagga (IB_DESIGNABLE
i mål-C). Detta låter gränssnittsbyggaren veta att en klass kan visa anpassat innehåll på sin duk.
Förutom att kunna visa egna objekt i Interface Builder kan du också markera egenskaper med @IBInspectable
flagga och få dem att visas i menyn Interface Builder inspector, där de kan redigeras precis som alla andra egenskaper på dina synpunkter. Det är inte ett krav att en klass ska markeras designbar för att den ska ha inspekterbara egenskaper.
Du kan också ange designkod endast kod. Du kan exempelvis använda detta för att förfölja vyn med exempeldata för att få en mer exakt känsla för gränssnittet. Du gör det genom att överstyra prepareForInterfaceBuilder
metod. Annat än det kan du använda #if TARGET_INTERFACE_BUILDER
att välja kod in eller ut för att köras i den slutliga gränssnittsbyggaren.
Förhandsgranskningsredigeraren låter dig nu visa flera förhandsgranskningar av olika simulerade enheter sida vid sida. Inte bara kan du se hur din app ser på olika enheter, men du kan också ställa in var och en av enheterna i antingen stående eller liggande läge. Detta ger ett snabbt sätt att förhandsgranska appens användargränssnitt på olika enheter och orienteringar utan att först köra den.
Apple lade till nya speltekniker till Xcode 6 och iOS 8, nämligen SceneKit och Metal. SceneKit, som tidigare var tillgänglig på OS X, är en 3D-scenerare. Metal är ett ramverk som kan användas för att skapa högt optimerade grafiska rendering och beräkningsuppgifter tack vare den låga tillgången till A7 och A8 GPU.
SpriteKit har också förbättrats med fysik ocklusion, fysik fält, universella kinematik och begränsningar, shaders, lightings och skuggor.
En annan viktig ny egenskap i SpriteKit är SpriteKit Level Editor som låter dig visuellt montera scener. Precis som du kan skapa ditt användargränssnitt i Interface Builder utan att skriva någon kod kan du göra detsamma när du använder ett SpriteKit-spel med SpriteKit Level Editor.
Storyboards har nu introducerats för OS X-utveckling. Precis som i IOS-utveckling låter de dig konfigurera dina visningslayouter och trådvisningar tillsammans med olika segue-animeringar. Vid skrivningstillfället är vissa funktioner, inklusive storyboards, fortfarande inaktiverade i Xcode (6.0.1) för OS X-utveckling i väntan på OS X Yosemite-utgåvan.
Gestkännare är nu tillgängliga i AppKit. Dessa används ganska mycket på samma sätt som i IOS-utveckling. Du kan se tillgängliga gester i Objektbibliotek i gränssnittsbyggare.
Lokalisering görs annorlunda i Xcode 6 än tidigare. Du kan nu exportera allt ditt lokaliserbara innehåll till XLIFF, vilket är industristandarden som förstås av många översättningstjänster. När du får översättningarna tillbaka importerar du dem och Xcode sammanfogar det nya innehållet i ditt projekt. Du bör ha en XLIFF-fil för varje språk du stöder i din app.
Du kan nu förhandsgranska lokaliserat innehåll utan att ändra enhetens eller simulatorns språk i inställningar. För att göra detta, välj Produkt> Schema> Redigeringsschema, välj sedan Springa och klicka på alternativ flik. Du kan välja ditt språk från Ansökningsspråk meny. Xcode levereras med Dubbel längd Pseudolanguage som du kan testa med om du inte har lagt till något annat språk. När du kör appen bör du se det lokala innehållet.
Du kan också visa lokaliserat innehåll utan att köra din app. För att göra detta använder du Förhandsgranskningsredigerare att växla mellan de olika språk som din app stöder. Standardsproget visas i det nedre högra hörnet av redigeraren och när du klickar på det presenteras en lista med tillgängliga språk. För att testa det utan att lägga till ett språk kan du använda dubbellängdspseudoläget.
Xcode 6 presenterar nu namngivna simulatorer som motsvarar specifika enheter, till exempel iPhone 5s, i stället för tidigare generiska namn, till exempel 64-bitars iPhone Retina.
Bland de enheter som du kan välja är iPhone och resizable iPad. Dessa låter dig ange bredd-, höjd- och storleksklasserna för simulatorn. Med det här kan du testa anpassningen av din app på alla Apples befintliga enheter såväl som eventuella framtida enheter, utan att behöva ladda ner en simulator för varje enhet.
Med den nya iOS-simulatorn kan du hålla data och konfigurationsinställningar grupperade ihop. Kör en konfiguration för en version av en app med egna data och en annan konfiguration för en annan appversion. Det innebär att du kan simulera att ha flera användare på din maskin. Varje användare kommer att ha egna data och konfigurationer.
HomeKit-ramen tillåter att din app kommunicerar med och kontrollerar anslutna tillbehör i en användares hem. I beta-versionerna av Xcode 6 kom HomeKit Accessory Simulator som en del av Xcode, men det är nu en del av Hårdvara I / O-verktyg för Xcode. Du kan ladda ner det på iOS Dev Center.
Xcode 6 gör debugging av appens användargränssnitt mycket enklare med felsökningsfunktionen för direktvisning. Du kan nu pausa din löpande app och dissekera det pausade användargränssnittet i en 3D-vy. Visningsfelsökaren visar dig dina synhierarki och Auto Layout-begränsningar. Om du väljer en vy kan du inspektera dess egenskaper i inspektören eller hoppa till den relevanta koden i assistentredigeraren. Med detta kan du inspektera problem som problem med Auto Layout-konflikter, se varför en vy är dold eller klippt osv.
För att starta felsökningsfönstret live, starta din app och klicka på Debug View Hierarchy knappen på felsökningsverktygsfältet.
Din app pausar och du presenteras med en 3D-visualisering av användargränssnittet. Du kan dra någonstans på duken för att rotera vyn.
Du kan byta mellan olika visningstillstånd med knapparna under duken.
Från vänster till höger:
Quick Look introducerades i Xcode 5 och det låter dig se objektets innehåll vid felsökning. Quick Look stöder vanliga föremål som bilder, snyggare vägar, kartplatser etc..
I Xcode 6 har detta förbättrats för att stödja två nya objekttyper, visningar (UIView
och NSView
) och anpassade objekt. För att aktivera Snabbsökning efter anpassade objekt implementerar du debugQuickLookObject
metod i den anpassade klassen.
Felsökningsnavigatorn spelar in och visar nyligen exekverade block samt förkodade block. Du kan använda den för att se var dina kodade block är och för att undersöka detaljerna om vad som har ställts in för att utföra. Du kan aktivera blockfelsökning genom att välja Debug> Debug Workflow> Visa alltid väntande block i köer menyalternativ.
Felsökningsmätare ger information om din apps resursanvändning vid felsökning. Xcode 6 har uppdaterade mätare, som inkluderar grafikprofilering för det nya Metal Framework och iCloud-stödet för dokument i Cloud and CloudKit-funktionerna.
Förutom dessa förbättringar introducerar Xcode 6 två nya felsökningsmätare, nätverk och diskaktivitet.
Nätverksaktivitet visar hur mycket data din app skickar och tar emot, samt en lista med öppna anslutningar. Du kan visa en historik tidslinje för att övervaka nätverksanvändningen, hjälpa dig att träna när och varför spikar i nätverksanvändning eller nätverksfel inträffade.
Diskaktivitet visar realtidsinformation om din apps läsning och skriver till disk. Det ger också information om alla öppna filer. Det finns en historik tidslinje för denna I / O-aktivitet för disken för att du ska övervaka.
Assetkataloger stöder nu storleksklasser. Det innebär att du enkelt kan anpassa ditt användargränssnitt för kompakt och vanlig höjd eller bredd genom att ge olika bilder för varje storleksklass.
Tidigare tillgångskataloger stödde bara PNG-bilder, men i Xcode 6 har stöd för JPEG- och PDF-vektorgrafik lagt till.
Du kan använda en XIB eller storyboard som din applikations lanseringsbild. Operativsystemet genererar nödvändiga lanseringsbilder för din app. Med detta behöver du inte ge enskilda tillgångar till lanseringsbilderna och du kan designa den i Interface Builder.
För att ställa in en XIB eller storyboard som din apps startbild, välj projektet i Project Navigator och välj ett mål från listan över mål. Under Allmän fliken, leta reda på avsnittet Appikoner och starta bilder och välj rätt fil från menyn märkt Starta skärmfilen.
Nya API har lagts till i XCTest-ramverket som möjliggör testning av asynkron kodning. Detta görs genom förhoppningsobjekt, XCTestExpectation
, som beskriver förväntade händelser. XCTestCase
har ett nytt API som väntar på förväntningarna att uppfylla och ställer in en timeout på den. En färdighetshandlare kallas antingen när alla händelser är uppfyllda eller när timeouten träffas. Det kan vänta på flera asynkrona händelser samtidigt. Du kan nu enkelt testa för systeminteraktioner som utförs asynkront, till exempel fil I / O, nätverksförfrågningar, etc..
Den förbättrade XCTest-ramen kan nu kvantifiera prestandan för varje del av en app. Xcode kör dina prestandatester och låter dig definiera en baslinjeprestandemätning. Varje efterföljande testkörning jämför prestanda, visar förändringen över tiden och-genom att markera problemområdet - varnar dig för plötsliga regressioner som ett kodfördrag kan introducera. Om den genomsnittliga prestationsåtgärden avviker väsentligt från baslinjen, kommer testet att misslyckas. Det här är ett utmärkt sätt att upptäcka prestationsregressioner i din app.
Med introduktionen av prestandatestning kommer möjligheten att profilera test i Instruments. Du kan välja ett test eller testpaket till profilen och göra ytterligare undersökning och analys i Instrument för att ta reda på varför testet misslyckades och hitta orsaken till regressionen.
Instrument har ett uppdaterat användargränssnitt. Med den nya mallkodaren kan du välja din enhet och mål samt startpunkten för din profileringssession.
Det finns en ny räknare mall som har kombinerats med evenemang för att ge en kraftfull syn på individuella CPU-händelser. Du kan även ange formler för att mäta evenemangsaggregat, förhållanden och mer.
I Xcode 6 skickas Instrument med stöd för Swift och du kan även använda den för att profilera apptillägg. Det finns också stöd för simulatorkonfigurationer. Simulatorkonfigurationerna behandlas som enheter av Instruments, vilket gör det enkelt att starta eller bifoga processer i simulatorn.
Apple fortsätter att förbättra sina utvecklingsverktyg och detta ses i varje större release av Xcode. Xcode 6 förbättras på sina föregångare för att ge utvecklare verktyg som förbättrar deras arbetsflöde och gör hela utvecklingsprocessen signifikant bättre.