Nichts ist so unbeständig, wie iOS-Code im Zuge der ständigen Objective C-Updates. Deswegen habe ich vergangene Nacht in einem etwas größerem Arbeitsschritt alle Buchprojekte für Xcode 4.5 und iOS6 upgedated und hochgeladen.
Es waren zwar keine großen Änderungen, aber musste halt doch gemacht werden.
Dabei sind natürlich auch kleine Updates im Code entstanden, weil manche Befehle eben schneller deprecated sind als man copy und pasten kann. Dadurch funktionieren die Apps zwar trotzdem, aber es werden eben ungemütliche kleine gelbe Ausrufezeichen angezeigt. Wer will das schon?
- Zum ersten Mal wurde ich in den Spielen „Lunar Lander“ und „Fire!“ fündig. Die dort verwendeten Labels nutzten bislang UITextAlignmentRight für rechtsbündige Textausrichtung. Das wird nun bemängelt und deswegen NSTextAlignmentRight verwendet. Zwei kleine Buchstaben, große Wirkung! :-)
- Bei Projekten mit Scrolling (z. B. „The Little Jungle Sisters“) gilt es zu beachten, dass bei der Erstellung der Hintergrundgrafiken das iPhone 5 mehr Pixel in der Breite (im Landscapemodus) benötigt und der Sprung von Ende des Layers zurück zum Anfang natürlich nun nicht mehr auf 480 Pixeln beruht.
Ich überlasse es dem Leser, die Werte für das iPhone 5 selbst anzupassen, falls nur für dieses Gerät veröffentlicht werden soll, andernfalls müssen eben die Bilder und die Modulo-Werte von Fall zu Fall angepasst werden. Die Änderungen im Vergleich zum Buch sollten meiner Meinung nach allerdings so gering wie möglich ausfallen, damit es nicht zu Konfusion bzgl. der Codes auf der Webseite und der Codes aus dem Buch kommt. - „Nuke Control“ mit Cocos2D kann ohne Probleme nach Installation von der aktuellen Version 2 weiter verwendet werden. Allerdings bemängelt Xcode zwei Zeilen als „deprecated“:
- [[CCDirector sharedDirector] setDisplayFPS:NO]
setDisplayFPS ist in diesem Fall veraltet und kann einfach entfernt werden. Wer trotzdem keine FPS-Anzeige im Spiel haben möchte, muss den Code durch die folgenden zwei Zeilen ersetzen:// FPS-Anzeige abschalten
CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector];
director.displayStats = NO; - Die Zeile „glColor4f(1.0, 1.0, 1.0, 1.0)“ in der Methode „draw“ kann komplett gelöscht werden. Der Direktzugriff auf die Farbe ist ab Cocos2D V2 in dieser Form nicht mehr erlaubt.Außerdem gilt zu beachten, dass die App nur in Standardauflösung funktioniert. Vor allem mit der neuen 4-Zoll-Auflösung überlappen sich die beiden Atome zu Beginn nicht und die Elektronen liegen bereits zum Start außerhalb der Begrenzung. Beim Update des Spiels für höhere Auflösung also unbedingt die Startposition beachten.
Sie finden die Änderungen natürlich auch auf dem Einlegeblatt.