iOS 5 GM släpptes för en timme sedan av Apple för iOS-applikationsutvecklare och Dev Team tillkännagav redan som dessa kan jailbreakas med redsn0w. Hittills har jag sett några av nyheterna implementerade av Apple på Apple-konferensen, men säkert i iOS 5 kommer det att finnas många fler nyheter som jag kommer att presentera för dig under de följande dagarna efter att jag har möjlighet att leka lite med nytt operativsystem. Tills dess, nedan har du ändringsloggen för det nya operativsystemet, så allt som Apple har implementerat nytt.
ANMÄRKNINGAR OCH KÄNDA FRÅGOR
Följande problem gäller att använda 5 SDK för att utveckla kod.
konton
- När du skapar ett iCloud-konto kan du använda vilket Apple-ID som helst så länge det är en fullständig e-postadress och inte ett MobileMe-konto. Om du har ett MobileMe-konto kan du flytta det kontot till iCloud. Du kan hitta mer information på: http://me.com/move
AirPlay
- Från och med iOS 5 är AirPlay aktiverat som standard för videoinnehåll i applikationer och webbplatser.
- I iOS 5 lägger AV Foundation till stöd för videouppspelning via AirPlay.
API: er
- Smakämnen
NSNetService
class och CFNetService API:er inkluderar inte P2P-gränssnitt som standard. För att bläddra, registrera eller lösa tjänster över P2P-gränssnitt måste en applikation använda BonjourDNSService*()
API:er som anges nedan. - Ställa in interfaceIndex parametern till
kDNSServiceInterfaceIndexAny
i följande API kommer inte att inkludera P2P-gränssnitt som standard. För att inkludera P2P-gränssnitt måste du nu ställa inkDNSServiceFlagsIncludeP2P
flagga vid användningkDNSServiceInterfaceIndexAny
eller ställ in interfaceIndex tillkDNSServiceInterfaceIndexP2P
. De berörda API:erna har:DNSServiceBrowse
DNSServiceRegister
DNSServiceResolve
DNSServiceRegisterRecord
DNSServiceQueryRecord
API-validering
- I iOS 5-utvecklingsverktygen är det möjligt att extrahera API:er som används av en applikation och få dem kontrollerade för användning av privata API:er. Det här alternativet erbjuds när du validerar din ansökan för appinlämning.
Apple TV
- Apple TV-programvaran gör det möjligt för användare att spegla innehållet i en iPad 2 till en Apple TV (andra generationen) med AirPlay. Den här programvaran aktiverar även Photo Stream på Apple TV så att användare kan komma åt foton lagrade i iCloud. Apple TV Software beta tillhandahålls för att testa den senaste AirPlay-funktionaliteten med dina iOS 2-appar och webbplatser. Om du vill installera Apple TV Software beta på din enhet måste du först registrera enhetens UDID i iOS Developer Program Portal.
Automatisk referensräkning
- I Xcode, om konfigurationen är inställd på Enhet och det finns ett utrymme i sökvägen till en av källfilerna (vanligare är projektet i en katalog med mellanslag), steget "Konvertera till automatisk referensräkning" (efter förkontroll ) kommer att misslyckas med fel:
Error in format of file: <path>
.Om det uppstår bör användaren byta till Simulator och försöka migreringen igen.
Binär kompatibilitet
- På appar som är länkade mot iOS 5 SDK kommer rullningsvyns innehållsförskjutningar inte längre att avrundas till integrerade pixlar under en nypningsgest.
GameKit
- Matchdata för turbaserade matcher är begränsad till 4 KB.
- FAST: Automatisk matchning med den turbaserade vykontrollen fungerar inte. Inbjudningar eller API för direkt automatisk matchning kan användas som en lösning.
icloud säkerhetskopiering
- Säkerhetskopieringar gjorda före den 22 september är inte längre tillgängliga. Vi rekommenderar starkt att du uppgraderar till den här versionen av iOS 5 för att kunna fortsätta säkerhetskopiera dina enheter
icloud Förvaring
- I iCloud-nyckelvärdesarkivet har det maximala antalet nycklar höjts till 256.
- Alla nygenererade provisioneringsprofiler är nu automatiskt aktiverade för iCloud. Om du använder en Xcode-hanterad Team Provisioning-profil klickar du på uppdatera i Xcode Organizer för att få en ny iCloud-aktiverad profil. För att aktivera alla andra provisioneringsprofiler för iCloud, återskapa helt enkelt dina profiler i iOS Provisioning Portal.
- Om din applikation använder
NSMetadataQuery
klass måste du sätta ett predikat och predikatet är nu hedrat. Men predikatet är enNSPredicate
-stilspredikat, inte ett Spotlight-predikat. Ett exempel på skillnaden är att du måste användaLIKE
istället för=
för jokerteckenmatchning. Skillnaderna definieras mer i detalj på:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSpotlightComparison.html#//apple_ref/doc/uid/TP40002370-SW1. - Smakämnen
setSortDescriptors:
metod avNSMetadataQuery
stöds inte. - För att aktivera iCloud-lagring i dina appar i iOS 5, klicka på kryssrutan Aktivera rättigheter i panelen Sammanfattning av ditt projekt. Xcode skapar en anpassad behörighetsfil för ditt projekt som automatiskt inkluderar ditt Team ID. Du kan lägga till ytterligare iCloud Container-värden som krävs av din applikation. (Observera att du måste återskapa dina befintliga provisioneringsprofiler, antingen med Xcode eller i iOS Provisioning Portal, för att använda iCloud-lagring.)
- Behållaridentifieringssträngen du skickar till
URLForUbiquityContainerIdentifier:
metod avNSFileManager
måste inkludera team-ID i början av strängen. Som en bekvämlighet kan du passeranil
för att hämta det första dokumentbehållarens ID som anges i appens rättigheter. - I iOS 5 kan filer som är skyddade via dataskydd inte användas med iCloud Storage API:er.
- Filpresentatörer—objekt som använder
NSFilePresenter
protokoll – ta inte emot några av de meddelanden som de ska ta emot, inklusive:Som en omgång, implementera
relinquishPresentedItemToWriter:
metod och kontrollera om författaren faktiskt skrev när din filpresentatör återskaffade filen. - Om du rapporterar en bugg relaterad till iCloud-lagringsgränssnitten, inkludera loggarna som samlades in under din felsökningssession. För att generera dessa loggar måste du installera en speciell felsökningsprofil på din enhet. Felsökningsprofilen kan erhållas från http://connect.apple.com. Den här profilen möjliggör generering av felsökningsloggar som behövs för att diagnostisera eventuella problem med iCloud-lagring. Instruktionerna för att samla in loggarna är:
- Installera profilen. (Det enklaste sättet att göra detta är att skicka det till dig själv och öppna bilagan på din enhet.)
- Återskapa felet.
- Synkronisera med iTunes för att ta bort loggarna från din enhet.
- Bifoga loggarna till din felrapport. Du hittar inloggningarna
~/Library/Logs/CrashReporter/MobileDevice/DeviceName/DiagnosticLogs
.
Dessa loggar kan växa sig stora mycket snabbt, så du bör ta bort profilen efter att du har återskapat problemet och dragit loggarna på din enhet.
- Filnamn är skiftlägesokänsliga i Mac OS X men skiftlägeskänsliga i iOS. Detta kan leda till problem när du delar filer mellan de två med iCloud. Du bör vidta åtgärder på iOS för att undvika att skapa filer vars namn endast skiljer sig från fall till fall.
iTunes
- Den version av iTunes som följer med GM-versionen kan inte synkronisera enheter som har beta 7-programvaran installerad. För att undvika detta problem, gör följande:
- Synkronisera alla enheter som har beta 7 installerat till den version av iTunes som följde med beta 7.
- Uppgradera iTunes till versionen som följer med GM-versionen.
- Anslut enheten och installera GM-programvaran. (Förstå att du kan se ett fel vid synkronisering när du ansluter enheten första gången.)
- När du har installerat GM-programvaran, återställ från din säkerhetskopia som du gjorde i steg 1.
Music Player
- FAST: När du tar bort en låt eller video från musik/videor på enheten kraschar Music Player-appen.
Säkerhet
- I iOS 5 stöds inte signering av certifikat med MD5-signaturer. Se till att certifikat använder signaturalgoritmer baserade på SHA1 eller SHA2.
Språng
- Push- och lokala aviseringar för appar visas i det nya meddelandecentret i iOS 5. Aviseringscenter visar meddelanden som anses vara "olästa". För att tillgodose push- och lokala aviseringar som inte har någon oläst status, ställ in applikationens märkesantal till 0 för att ta bort appens aviseringar från meddelandecentret.
UI-automatisering
- När du använder
performTaskWithPathArgumentsTimeout
metod avUIAHost
i ett UI Automation-skript där API:et matar ut för mycket (t.ex. tusentals rader text) till standardout eller standardfel, kan uppgiften låsa sig tills timeouten uppnås, då den kommer att skapa ett JavaScript-undantag. - Smakämnen
lock()
ochunlock()
funktioner avUIATarget
har ersatts medlockForDuration(
)
funktion. - I iOS 5 kan du nu utlösa exekveringen av ett UI Automation-skript på en iOS-enhet från värdterminalen genom att använda instrumentverktyget. Kommandot är:
instruments -w <device id> -t <template> <application>
- När du använder cli-instrumenten för UI-automatisering kan du nu rikta in dig på standardautomationsmallen och skicka skriptet och resultatsökvägen till verktyget som alternativ för miljövariabler. Till exempel:
instruments -w <device id> -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate <application> -e UIASCRIPT <script> -e UIARESULTSPATH <results path>
UIKit
- Rotationsåterrop i iOS 5 tillämpas inte för att visa kontroller som visas över en helskärm. Vad detta betyder är att om din kod presenterar en vykontroller över en annan vykontroller, och sedan användaren sedan roterar enheten till en annan orientering, kommer den underliggande kontrollenheten (dvs. presenterande kontrollenhet) inte att ta emot några rotationsåteruppringningar. Observera dock att den presenterande styrenheten kommer att få en
viewWillLayoutSubviews
ring när den visas igen, ochinterfaceOrientation
egenskapen kan efterfrågas från denna metod och användas för att lägga ut styrenheten korrekt. - I iOS 5 är
UIPickerView
klass skickar inte sinpickerView:didSelectRow:inComponent:
delegera meddelande som svar på det programmatiska valet av ett objekt. - Återvänder
nil
fråntableView:viewForHeaderInSection:
metod (eller dess sidfotsekvivalent) räcker inte längre för att dölja ett sidhuvud. Du måste åsidosättatableView:heightForHeaderInSection:
och återvänd0.0
för att dölja en rubrik. - I iOS 5 är
UITableView
klass har två metoder för att flytta en cell från en rad till en annan med definierade parametrar. Dessa API:er har: - Använda
UIWebView
klass i Interface Builder, är det möjligt att ställa in en transparent bakgrundsfärg i iOS 5. Utvecklare som kompilerar mot den nya SDK:n kan kontrollera sin XIB förUIWebView
transparenta inställningar. - I iOS 5 är
UINavigationBar
,UIToolbar
ochUITabBar
implementeringar har ändrats så attdrawRect:
metod anropas inte om den inte är implementerad i en underklass. Appar som har implementerats på nyttdrawRect:
i en kategori på någon av dessa klasser kommer att finna attdrawRect:
metoden kallas inte. UIKit gör länkkontroll för att förhindra att metoden anropas i appar som är länkade före iOS 5 men stöder inte denna design på iOS 5 eller senare. Appar kan antingen:- Använd anpassnings-API:et för barer i iOS 5 och senare, vilket är det föredragna sättet.
- Underklass
UINavigationBar
(eller de andra barklasserna) och åsidosättdrawRect:
i underklassen.
- Smakämnen
indexPathForRow:inSection:
,section
ochrow
metoder förNSIndexPath
nu användaNSInteger
istället förNSUInteger
, så att dessa typer matchar med metoder definierade påUITableView
. - Uppförandet av
UITableView
klassscrollToRowAtIndexPath:atScrollPosition:animated:
metoden har ändrats. Om en rullningsposition påUITableViewScrollPositionTop
orUITableViewScrollPositionBottom
är specificerad, justerar metoden nu för de övre och nedre delarna avcontentInset
fast egendom. - I utgåvor före iOS 5,
UIPopoverController
klass skulle ovillkorligen ställa in autostorleksmaskerna för visningskontroller som tillhandahåller innehållet för popover-kontrollern. Det skulle också ovillkorligen ställa in autostorleksmaskerna för vyerna för visningskontroller som trycks på till enUINavigationController
objekt som var kontrollenheten för innehållsvyn för popover-kontrollernUIPopoverController
class gör inte längre detta för applikationer länkade mot iOS 5 eller senare. Utvecklare bör se till att maskerna för automatisk storleksändring av vyer är korrekt inställda för att tillåta godtyckliga storleksändringar inom vilken behållare som helst, inte bara popovers. En mask av(
UIViewAutoresizingFlexibleWidth
|
UIViewAutoresizingFlexibleHeight
)
är rimligt. - Kompletteringshanteraren för
saveToURL:forSaveOperation:completionHandler:
anropas utanför det koordinerade skrivblocket. - Smakämnen
autosaveWithCompletionHandler:
metod kallas nu bara för periodbaserat sparande när det är säkert att återvända utan att spara. Dokument måste dock sparas omsaveToURL:forSaveOperation:completionHandler:
metoden åberopas.
Safari och WebKit
- I iOS 5, en ny ärvd CSS-egenskap,
-webkit-overflow-scrolling
, är tillgänglig. Värdettouch
gör det möjligt för webbutvecklaren att välja att rulla i inbyggd stil i enoverflow:scroll
element. Standardvärdet för den här egenskapen ärauto
, som tillåter rullning med ett finger utan fart. - WebKit-ramverket har uppdaterats till en version som nära matchar motorn som används av Safari 5.1 på skrivbordet. Det finns några områden att vara medveten om med det nya WebKit-ramverket på iOS 5. Specifikt för webbplatser och inbyggda appar som använder UIWebView:
- Det finns en ny HTML5-kompatibel parser.
- Textlayoutens bredd kan ändras något eftersom ordavrundningsbeteendet nu har flyttalsbaserad precision.
- Det finns förbättrad validering av
<input type=number>
formulärfält, vilket inkluderar att ta bort inledande nollor och sifferformatering. - Touch-händelser stöds nu i inmatningsfält.
<input type=range>
stöds nu.window.onerror
stöds nu.- Det finns en ny användaragent som inte har lokalinformation i User Agent-strängen.
- Webbadresser kanoniseras nu genom att göra schemat endast med små bokstäver. Om en falsk URL används för att skicka information från en
UIWebView
tillbaka till ursprunglig kod, se till att schemat alltid är gemener, eller att den ursprungliga koden jämför schemat på ett skiftlägesokänsligt sätt.
Wi-Fi-synkronisering
- Stöd för trådlös synkronisering kräver Mac OS X 10.6.8 eller Lion. Du kommer att se ett alternativ för att aktivera trådlös synkronisering när du ansluter din enhet till iTunes med USB-kabeln. Det rekommenderas att du utför din första synkronisering med en kabel efter att du har återställt enheten.
- Trådlös synkronisering utlöses automatiskt när enheten är ansluten till ström och på samma nätverk som den ihopparade datorn. Eller så kan du manuellt utlösa en synkronisering från iTunes eller från Inställningar > Allmänt > iTunes Sync (samma nätverk som en parad dator krävs).
- Om du hittar problem med appar, media och/eller foton som synkroniseras till din enhet kan du återställa och sedan synkronisera om. Från Inställningar > Allmänt > Återställ, välj Radera allt innehåll och inställningar. Anslut sedan till iTunes igen och synkronisera igen.
Xcode-verktyg
För information om ändringar av Xcode, Interface Builder, Instruments och iOS Simulator, se Xcode Release Notes.