Det här snabba tipset kommer att introducera dig till några av de kraftfulla funktionerna för testning och debugging-program med Xcode och iOS-simulatorn.
I åratal har utvecklare kämpat med att felsöka CoreLocation-baserade applikationer i simulatorn på grund av brist på inbyggd simulatorstöd för anpassade koordinater. Även om projekt som FTLocationSimulator var en stor hjälp, kvarlevde många av oss fortfarande envying Android-utvecklare som enkelt kunde ställa platsen för Android-simulatorn med hjälp av de medföljande DDMS-verktygen.
Lyckligtvis har dessa dagar av lugn avund varit borta ett tag. Med utgåvan av Xcode 4.2 kunde iOS Developers simulera en standardplats för ett antal globala städer. Det här tillvägagångssättet finns fortfarande, och kan göras genom att välja "Redigera schema":
Och sedan navigera till fliken "Alternativ" i popup-fönstret:
De senaste versionerna av iOS Simulator har dock gjort det ännu enklare att ändra det simulerade läget, och du kan nu uppnå detta vid körning.
När du har startat simulatorn väljer du Felsökning> Plats kommer att producera följande menyalternativ:
Som du kan se kan du nu enkelt ställa in egna koordinater med alternativet "Anpassad plats":
Naturligtvis kräver det att du faktiskt vet exakt koordinaterna för den plats du vill simulera, och inte bara gatuadressen. Processen att generera latitud och longitud koordinater från en adress kallas geokodning, och det finns ett antal gratis webbplatser och iOS-appar som genererar koordinater från en gatuadress för dig. Den fria IOS App Geocode Något samt webben geocoder.us är båda värda att nämna, och denna geocoder mashup är ett snabbt och enkelt sätt att dra koordinater direkt från Google Maps.
Simulatorn kommer också med ett antal fördefinierade platser och sökvägar som du kan använda för att testa dina egna applikationer. En kort beskrivning av var och en anges nedan.
Om du väljer "Apple" från platsmenyn ställs den nuvarande platsen till Apple HQ på 1 Infinite Loop, Cupertino, CA. För användare av tidiga versioner av Xcode kommer du att känna igen det som den enda platsen som ursprungligen stöddes av simulatorn.
Om du väljer alternativet "City Bicycle Ride", kommer CoreLocation-ramen att generera koordinater som följer en förinställd sökväg nära Apple HQ. Cykelalternativet kommer att orsaka uppdateringar med en hastighet på cirka 5 - 7 meter per sekund.
Alternativet "City Run" är precis som "City Bicycle Ride" -inställningen, med undantag för att uppdateringar uppstår med en spårningshastighet på ca 3 - 4 meter per sekund.
Alternativet "Freeway Drive" skiljer sig från de föregående två i både den följda vägen och hastigheten i meter per sekund. Banan går längs Junipero Serra Freeway strax norr om Apple HQ, och hastigheten brukar vara mellan 20 och 35 meter per sekund.
I teorin bör detta alternativ generera koordinater kopplade till Apple Store-platser. Men med iOS 6.0 Simulator och Xcode 4.5 verkar det här alternativet vara mycket brutalt. I min erfarenhet som testar detta verkar koordinaterna alltid börja ungefär 33,7718 N, 112,9031 W, och sedan öka gradvis i både nord- och västvärdena och flytta nuvarande plats på en diagonalväg till ingenstans. Jag har lagt fram detta som en felrapport till Apple, så om andra upplever samma problem kommer det förhoppningsvis att lösas snart!
Eftersom Apple Maps-appen kan köras i simulatorn är det enkelt att testa några av ovanstående alternativ. Starta bara iOS-simulatorn som du normalt skulle, ställ in din simulerade plats och starta sedan programmet Maps.
Med iOS 6 SDK kan du nu köra program som använder Maps direkt i simulatorn!
En annan stor egenskap hos iOS-simulatorn är möjligheten att placera animationer i slowmotion med Debug> Växla långsamma animeringar menyalternativ.
Att göra det kan vara till stor hjälp när du försöker skapa en anpassad UIKit-animering och måste se till att varje ram ser rätt ut.
Kanske är en mer praktisk användning av denna funktion att sakta ner animationerna som uppstår vid rotering av enheten för att polera orienteringsändringsanimationerna (se Session 517 från WWDC 2012 för mer information om hur du kan polera orienteringsanimeringar).
De debug menyalternativ ger också den otroligt användbara möjligheten att färga vyer i realtid:
Du kan använda dessa alternativ för att visuellt identifiera blandade lager, kopierade bilder, feljusterade bilder och visningar som görs utanför skärmen.
Det här är en användbar funktion för att felsöka dina egna applikationer, och det kan också vara inblick i att granska standardprogrammen på simulatorn. Följande skärmdump visar appen Maps och Passbook-appen med alternativet "Färgblandade lager" valt:
Medan inget kommer att ersätta upplevelsen av att testa applikationer på riktig hårdvara, har simulatorn kommit långt under de senaste åren med händelseremulering i verkligheten. Faktum är att vissa händelser, som att byta statusfältet "i samtal" eller generera minnesvarningar, är troligt lättare att felsöka i simulatorn än med en faktisk enhet.
En titt på Hårdvara menyn kommer att avslöja följande händelsealternativ:
De flesta av dessa är självförklarande, men några förtjänar ytterligare anteckning.
Alternativet "Simulera maskinvara tangentbord" är huvudsakligen för att felsöka iPad-applikationer där användaren sannolikt har ett fysiskt tangentbord anslutet via Bluetooth eller dockningsanslutningen. Testning med alternativet hårdvara tangentbord bör vara en viktig del av iPad-app beta-testning.
Med "TV Out" -alternativet kan du simulera VGA / HDMI-anslutningar genom att skapa ett nytt fönster som kan ha en upplösning så låg som 640x480 eller så hög som 1920x1080 (dvs 1080p).
Det enklaste sättet att lägga till bilder i iOS-simulatorn är att dra och släppa dem enkelt från OS X Finder-fönstret till simuleringsfönstret.
Men om du behöver lägga till många olika bilder för testning, blir processen snabbt ineffektiv. När du behöver lägga till många bilder på en gång kan du överväga att skriva ett enkelt iOS-program som kan gå igenom din bildlista och lägga till varje bild i fotobiblioteket med UIImageWriteToSavedPhotosAlbum
fungera. För att se hur det här görs, ta en titt på steg 6 i min Build a Photo App med GPUImage handledning.
Ett annat tillvägagångssätt är att lägga till bildfilerna direkt i simuleringsfilsystemet, men stegen för att uppnå detta verkar förändras med varje ny version av iOS. Att bygga din egen importör kan vara ett mer tillförlitligt tillvägagångssätt på lång sikt (känner till ett bättre sätt att uppnå detta? Lämna en kommentar nedan!).
För mina egna iOS-applikationer försöker jag alltid distribuera för både den nuvarande versionen av IOS och en tidigare version. Som standard innehåller Xcode emellertid bara en simulator för den aktuella iOS-versionen. Lyckligtvis finns det en enkel metod för att få simulatorn för det tidigare iOS-utgåvan också.
När Xcode är öppen väljer du Xcode> Inställningar från menyraden och navigera sedan till fliken "Nedladdningar". Härifrån kan du installera tidigare iOS-simulatorer samt paketet Kommandoradsverktyg. Jag rekommenderar att du installerar alla tre alternativen som visas:
När installationen är klar kommer du att kunna välja 5.0 / 5.1 iOS-simulatorerna när du bygger och kör dina program.
Vilka tips eller tricks har du för att arbeta med iOS-simulatorn? Lämna din feedback i kommentarfältet nedan!