iOS 5 is officieel uitgebracht en iOS-ontwikkelaars willen graag gebruik maken van de vele nieuwe functies die beschikbaar zijn in de iOS 5 SDK. In dit artikel reflecteren industriegoeroes Brandon Trebitowski en Collin Ruffenach over de kansen, de efficiëntie en de meest opwindende functies van de nieuwste SDK. Dit bericht moet gelezen worden voor alle iOS SDK-ontwikkelaars!
Met de release van iOS 5 SDK heeft het iOS-ontwikkelingsplatform een nieuw niveau van volwassenheid bereikt. Het is met deze SDK-release duidelijk dat Apple echt luistert naar de behoeften en verzoeken van de ontwikkelingsgemeenschap. Apple heeft niet alleen de gemeenschappelijke doelen en pijnpunten erkend die iOS-ontwikkelaars tot uitdrukking brachten, maar ze hebben ook geprobeerd hulpmiddelen te bieden op SDK-niveau die veel van de veel voorkomende problemen zullen oplossen en enkele van de meest frustrerende valkuilen volledig zullen verlichten..
Met de nieuwste SDK is één ding zeker: het is nog nooit zo opwindend geweest om een iOS-ontwikkelaar te zijn! Dit artikel biedt u een basisoverzicht van de verbeteringen die we het meest opwindend vinden.
iCloud-opslag is een enorme nieuwe functie in iOS 5. Hiermee kunnen ontwikkelaars toepassingsgegevens automatisch synchroniseren tussen platforms. Er zijn twee vormen die dit kan aannemen: sleutel waarde en documentopslag.
Hoewel sleutelwaarde een aardige cloudversie van NSUserDefaults oplevert, is de ruimte beperkt. De maximale hoeveelheid gegevens die kan worden opgeslagen, is 64 kB. In dat geval stelt Apple voor om dit opslagmechanisme alleen te gebruiken voor kleine hoeveelheden meta-informatie, zoals het laatste paginanummer dat in een lezertoepassing wordt gelezen. Een ander probleem met cloudopslag met sleutelwaarde is dat de ontwikkelaar geen controle heeft over conflictoplossing. Wanneer een conflict optreedt, wordt altijd de sleutelwaarde met de nieuwste tijdstempel gebruikt. In een toepassing in de echte wereld kan dit al dan niet de juiste keuze zijn.
Naar mijn mening wordt de documentwinkel hier een groot voordeel. Ik heb begrepen dat je elk document dat je in de cloud kiest kunt synchroniseren. Hierdoor wordt het veel eenvoudiger om dingen zoals notities en taken met persistente, gedistribueerde gegevens te maken. Dit kan eenvoudig worden bereikt door bijvoorbeeld uw Sqlite-database of Core Data-winkel te synchroniseren. In tegenstelling tot de sleutel / waarde-synchronisatiemethode, kunnen documentopslagontwikkelaars hun eigen conflictoplossingsschema definiëren.
Ik heb het gevoel dat Apple dingen heeft bijna gelijk met hun iCloud-implementatie. Het laaghangende fruit waarvan ik denk dat ze ontbreken, is het vermogen tot gebruikersinteractie tussen hun gegevens. Als ze dergelijke mechanismen zouden bieden, dan zouden online games volledig gefaciliteerd kunnen worden via iCloud.
iOS 5 markeert het begin van wat een vrij serieuze relatie met Twitter lijkt te zijn. Ze zijn niet "Facebook-officieel" of zoiets, maar ze zullen veel van elkaar te zien krijgen in de komende paar releases. Apple heeft moeite gehad om de juiste snaar te raken in de sociale markt. Ping lijkt een beetje mis te lopen en het lijkt erop dat Apple klaar is om een bal te spelen met Twitter in plaats van zelf in de game te gaan spelen. Dit zal voor veel ontwikkelaars een goed nieuws zijn. Na de OAuthcalypse werd de Twitter-integratie voor een bepaalde toepassing veel complexer. Met deze SDK-release beheert iOS in wezen namens u de Twitter-authenticatie, waarbij gebruikers de Twitter-authenticatie van een app in de iOS-systeemvoorkeuren kunnen in- of uitschakelen. Apple biedt nu ook een gemeenschappelijke beeldcontroller voor het maken van tweets.
In het adresboek heeft Apple een nieuwe functie toegevoegd om Twitter te schrapen voor de foto's van uw contactenprofiel. Het werkt vrij goed en spreekt met de andere soorten integratie die we mogelijk zien van app-ontwikkelaars. Dit alles komt ook tot stand via integratie van Twitter-foto-uploads, die ook wordt gefaciliteerd door het nieuwe Twitter.framework. Over het algemeen maakt dit het lezen en schrijven naar Twitter exponentieel eenvoudiger en lijkt het iets te zijn dat we nog meer zullen zien in komende releases.
Met het aanbreken van Xcode 4.0 werd Interface Builder (IB) een veel integraal onderdeel van de ontwikkelingservaring omdat het nu een onderdeel van Xcode is in plaats van een afzonderlijke applicatie. Deze trend gaat verder met de verbetering van de Interface Builder Interface en de introductie van Storyboarding.
Als het gaat om wijzigingen in de feitelijke IB-interface, probeert Xcode 4.2 een nauwere verbinding tussen de code die IBOutlets en IBActions vertegenwoordigt en hun visuele weergave in Xcode te bevorderen. Dit betekent dat u de declaraties van IBAction-methoden daadwerkelijk kunt verbinden met de knoppen waarmee ze worden geactiveerd en IBOutlet-verklaringen naar de eigenlijke UI-component waarnaar ze verwijzen.
Afgezien hiervan zie je ook GUI-representaties voor zaken als UIGestureRecognizers, GLKit Views en Controllers en de nieuwe UIStepper.
Storyboarding is het andere grote nieuwe verhaal als het gaat om IB. Simpel gezegd, werken met storyboards betekent dat je nooit hoeft te bellen pushViewController: geanimeerde
of popViewController: geanimeerde
nog een keer. De hele stroom bewegende controllers op en naast een navigatiecontroller, en modische presentaties, kan visueel worden gedaan via Storyboarding.
Al met al maakt dit een visualisatie van elke mogelijke schermstroom in uw toepassing mogelijk, vermindert het de code en, nog belangrijker, kunnen niet-ontwikkelaars hun inbreng in een bruikbare vorm bijdragen. Vaak gaat de conversie van concept / creatief naar implementatie / code verloren in de vertaling. Met de nieuwe storyboard-aanpak kunnen ontwerpers stroomrepresentaties maken die de hoeveelheid werk verminderen die de ontwikkelaars van het project nodig hebben..
Sinds de allereerste versie van iOS is geheugenbeheer een enorm pijnpunt voor ontwikkelaars. Ik zou zeggen dat de meeste crashes van toepassingen te wijten zijn aan verkeerd geheugenbeheer. ARC probeert dit op te lossen door de referentietelling volledig weg te houden van de ontwikkelaars. Alle geheugen gerelateerde methoden (vrijlating
, behouden
, autorelease
, enz.) zijn nu verouderd om optimaal gebruik te kunnen maken van ARC.
Er zijn enkele enorme voordelen verbonden aan het gebruik van ARC. Ten eerste verlaagt het drastisch de drempel voor nieuwere ontwikkelaars op het iOS-platform, vooral ontwikkelaars afkomstig van platforms zoals Android die gebruik maken van Garbage Collection. Het vermindert ook het aantal regels codeontwikkelaars die moeten worden geschreven, omdat u de geheugenoproepen niet langer nodig hebt om het aantal behouden aantallen te wijzigen. Mijn enige zorg met ARC is dat ontwikkelaars nu misschien nooit het belang van goed geheugenbeheer leren kennen. Dit kan leiden tot luie programmeermethoden en kan mogelijk een toename van het aantal geheugenheffende toepassingen veroorzaken.
Core Image, een framework dat al een tijdje beschikbaar is voor OS X-ontwikkelaars, is eindelijk beschikbaar als onderdeel van de iOS 5-SDK. Hiermee kunnen ontwikkelaars eenvoudig een enorme bibliotheek van foto- en videomanipulatiefilters gebruiken, en het biedt ook een eenvoudige taal voor hen om hun eigen filters te maken. Het is nu ongelooflijk eenvoudig om taken uit te voeren zoals het betegelen, maskeren, mengen en samenstellen van meerdere afbeeldingen.
Ik was echt geïntrigeerd om te zien dat de filtertaal lijkt op basis C en wordt geladen tijdens runtime. Gezien deze draagbaarheid zou het mij niet verbazen als we een website / winkel van een derde partij zien die deze filters in de nabije toekomst verkoopt.
Bekijk voor een voorbeeld van Core Image filterkracht dit filter dat een gekristalliseerd effect toevoegt:
Met de release van iOS 5 in het openbaar krijgt Xcode ook een upgrade naar 4.2. Xcode 4.2 heeft veel verbeteringen van Xcode 4.1, voornamelijk gerelateerd aan de nieuwe SDK- en iOS 5-functies. Een niet-SDK-gebaseerde verbetering is de verfijning van Schema's en GIT-integratie. GIT is de dominante broncontroletechnologie bij iPhone-ontwikkelaars geworden en het is geweldig om Xcode te laten profiteren van alle geweldige dingen die GIT te bieden heeft. Schema's zijn de nieuwe plaats waar je dingen van het projectconfiguratietype bewaart. Dit omvat de release waarvoor je bouwt, gekoppelde frameworks, build-scripts, etc. Schema's kunnen worden gedeeld en maken taken als testen en projectdeling tussen teams over het algemeen gemakkelijker.
Het grotere nieuws hier is de diepe GIT- en SVN-integratie. Apple heeft alle mogelijkheden van bronbesturingssoftware en ingebouwde visualisaties van hoe ze in Xcode werken genomen. Bestanden zijn allemaal voortdurend gemarkeerd met updates over hun status (Toegevoegd / Gewijzigd). Elk bestand kan in historische weergave worden getoond. In de historische weergave krijgt u 2 panelen met een tijdlijn in het midden, waar u op tijd naar achteren kunt navigeren voor het bestand. Er zijn complete blame views, commit en push entry interfaces en zelfs vertakkings en conflictresolutie displays. Integratie met GITHub is ook eenvoudig. Al met al is dit een geweldige verbetering. Zorg ervoor dat u dit document van Apple bekijkt, dat alle functies in detail benadrukt.
NewsStand is nog een ander voorbeeld van de rijping van het iOS-platform. Tijdens de laatste paar releases is Apple begonnen met het aanbieden van aanbiedingen om veelvoorkomende pijnpunten van ontwikkelaars aan te pakken in de "sandbox" -omgeving die ze hebben gemaakt. Game Center en iCloud zijn enkele generieke voorbeelden hiervan, maar NewsStand is een investering van Apple in het faciliteren van speciale behoeften van een specifiek type applicatie.
Het NewsStand-framework stelt ontwikkelaars in staat om twee dingen te doen. Ten eerste kunnen ontwikkelaars een pushmelding naar hun applicaties sturen die ze op de achtergrond start en het nieuwste nummer downloaden. Ten tweede kunnen ontwikkelaars speciale pictogrammen instellen om hun toepassing in de weergave NewsStand weer te geven. NewsStand-applicaties zullen allemaal in een speciale NewsStand-map staan en dit zal een gemeenschappelijke native-objectrepresentatie voor de "Bibliotheek" van problemen op het apparaat creëren.
Wat hier nog onduidelijk is, is wat voor soort certificering nodig is om een NewsStand-applicatie te zijn. Kan Engadget een NewStand-typetoepassing maken? Ik ben er zeker van dat veel blogs de mogelijkheid willen hebben om inhoud te verspreiden en deze op de achtergrond te downloaden voor hun iOS 5+ -gebruikers. Er lijkt een beperking te zijn dat slechts één push-notificatie op de achtergrond per 24 uur is toegestaan, het zal interessant zijn om te zien of een van de alleen-internet-mediakanalen misbruik maken van dit nieuwe framework.
Als je ooit naar een ontwerpdocument hebt gekeken, dat hebt vergeleken met wat is voorzien met de Apple UIKit-standaardwaarden, en vervolgens je eigen implementatie volledig moet laten rollen in overeenstemming met de intenties van de ontwerpers, dan zul je enthousiast zijn voor de introductie van aangepaste UIKit-besturingselementen! Alle belangrijke bedieningselementen laten nu toe om hun eigenschappen voor achtergrondafbeelding, tintkleur en titelpositie gemakkelijk aan te passen. Ik ben bijzonder enthousiast over de mogelijkheid om de achtergrondafbeeldingseigenschap in te stellen. Ik heb uren besteed aan het herscheppen van een UISwitch, gewoon om het een beetje anders te laten lijken.
Dit is een grote stap voorwaarts wat betreft het aanpassen van applicaties. Ik weet zeker dat we een veel slimmere integratie van Apple UI-componenten zullen gaan zien. Langs diezelfde lijnen zullen we ook zien dat sommige mensen de prachtige componenten van Apple er totaal afschuwelijk laten uitzien.
Zoals je ziet is iOS 5 een grote uitgave. Het heeft diepgaande verbeteringen aan zowel de SDK als de IDE waarmee we ons allemaal ontwikkelen. Hoewel we ons best deden om de grote punten in dit artikel te halen, zijn er nog tal van andere functies waarover we niet hebben kunnen praten. Hier volgt een snel overzicht van enkele extra opmerkelijke wijzigingen:
Dus waar wacht je op? Ga iOS 5 halen en profiteer van al deze nieuwe functies!
In de komende weken zal Mobiletuts + uitgebreide tutorials bieden over veel van de nieuwe iOS 5 SDK-functies, waaronder storyboarding, het Twitter-framework, het Core Image Framework, de NewsStand-ondersteuning en meer!
Vertel ons waar je over moet schrijven door hieronder te stemmen voor de onderwerpen die je het meest interessant vindt om te leren over:
Brandon Trebitowski is een softwareontwikkelaar en auteur uit Albuquerque, New Mexico. Brandon heeft een BS in computerwetenschappen van de universiteit van New Mexico en heeft de afgelopen tien jaar software ontwikkeld. In augustus 2008 startte hij iCodeBlog.com om beginnende ontwikkelaars te leren software voor de iPhone te schrijven. Nadat het blog in december 2008 door ELC Technologies was overgenomen, begon hij fulltime te werken voor het ontwikkelen van mobiele software.
Brandon heeft sindsdien samen een iOS-ontwikkelingsboek ontwikkeld met de naam iOS 4 In Action en is de ontwikkelaar van Lead Mobile Applications bij ELC Technologies geworden. Hij heeft een sterke passie voor programmeren en deelt deze graag met anderen.
Je kunt Brandon's berichten volgen op zijn twitter @ merkontreb.
Wilt u de meest actuele handleiding over de iOS SDK? Grijp iOS 4 in actie, waaraan Brandon heeft bijgedragen.
Collin Ruffenach is een iOS-ontwikkelaar met ELC Technologies uit Portland, OR. Collin verdiende een B.S. in Computer Systems Engineering en een M.S. in Computer Science in 2010 van de Arizona State University. Zijn onderzoek draaide rond de ontwikkeling van iOS in op huisautomatisering gebaseerde scenario's.
Sinds 2008 draagt Collin bij aan iCodeBlog, waar hij zowel artikelen als screencasts op verschillende iOS-programmeeronderwerpen heeft geplaatst sinds de iOS SDK voor het eerst werd uitgebracht. Collin heeft onlangs bijgedragen aan een nieuw boek genaamd Objectief-C Grondbeginselen met Manning Publishing.
Je kunt Collin's berichten op zijn twitter volgen: @cruffenach.
Wilt u die Objective-C-vaardigheden verfijnen? Bekijk Objective-C Fundamentals, waaraan Collin heeft bijgedragen.
Bedankt voor het lezen!