Erfahrungen beim Wechsel von Snow Leopard auf Lion

Wie ich vor einiger Zeit bereits angekündigt hatte, habe ich auf einem MacBook Pro von Mitte 2009 den Wechsel von Mac OS X Snow Leopard auf Lion vollzogen. Grund dafür war der Einsatz von RubyMotion, das seinerseits die aktuelle Fassung von Xcode erwünscht, das eben nur unter Lion zur Verfügung steht.

Hier will ich nun kurz aufzeigen, über welche Fallstricke ich dabei stolperte:

Der Lüfter

Der Lüfter schien nach dem Upgrade auf Dauerbetrieb zu laufen. Es lief offensichtlich keinerlei Anwendung, die dies zu rechtfertigen schien. Beim näheren Hinsehen fiel aber dann doch der Prozess mdworker auf. Die Spotlight-Suche erstellte einen neuen Index. Angezeigt wird dies dann auch dadurch, dass oben rechts die Lupe von Spotlight in der Mitte einen Punkt hat.

Nachdem der Index erstellt war, beruhigte sich der Lüfter auch wieder.

Xcode

Also habe ich als nächstes die aktuelle Version von Xcode installiert. Dann schnell über Alfred gestartet. Allerdings kam immer noch die alte Xcode Version. Das neue Xcode wird nämlich an anderer Stelle installiert. Neuerdings liegt es auch unter /Applications. Das alte findet man hingegen unter /Developer/Library.

Wie deinstalliert man also nun die alte Fassung?
Xcode Deinstallation

Das neue Xcode will die alte Fassung deinstallieren (vgl. Screenshot). Doch leider führt das nicht zum erhofften Erfolg. An irgendeiner Stelle scheitert die Deinstallation.

Schnell nachgegoogelt liefert die folgende Befehlszeile

sudo /Developer/Library/uninstall-devtools –mode=all

Und damit gab’s also nur noch eine Xcode Version — hurra!

Laufzeitumgebungen nachinstallieren
Mac OS X 10.7 Core Library

Nach der Installation des reinen Xcode muss man nun noch die verschiedenen Laufzeitumgebungen nachinstallieren. Aber auch hier hapert es mit dem Automatismus. Die Mac OS X 10.7 Core Library ist nicht verfügbar! Mittlerweile ist das wohl auch dann bis Cuppertino vorgedrungen, so dass der Download nun immerhin anstartet…

Verlorene Verknüpfungen

Die Verknüpfung von z.B. der Dateiendung .xls zu Libre Office war nach dem Update nicht mehr vorhanden. Ich musste Libre Office allein öffnen und darin dann das Excel-Sheet öffnen. Danach funktionierte auch wieder ein Doppelklick auf die Excel-Datei selbst.

Lokale Snapshots von TimeMachine

Seit Lion erstellt TimeMachine nun auch lokale Snapshots als Backup, selbst wenn das TimeMachine-Laufwerk nicht angeschlossen ist. Das führt aber auf der anderen Seite dazu, dass der Rechner nach dem Aufwecken erstmal eine recht hohe Last hat, weil der erstmal über die gesamte Platte rennt und eben diesen Snapshot anlegt. Dieses Feature lässt sich aber deaktivieren (zumindest indirekt über den Batteriebetrieb oder via Kommandozeile). Genaueres kann in dieser schönen Beschreibung der TimeMachine Änderungen unter Lion lesen.

Trackpad-Bedienung

Zu den größten Umstellungen in der Bedienung ist es beim Trackpad gekommen. So ist nun standardmäßig das Zwei-Finger-Scrollen logisch genau umgekehrt worden. Es verhält sich nun so wie auf dem iPad. Man dies in der Systemeinstellung aber wieder zurückdrehen.

Viel schwerwiegender ist aber, dass nun das Navigieren durch die einzelnen Applikationen via drei-Finger-Wischgeste nicht mehr funktioniert. Diese sind nun nur noch für Applikationen im neuen Vollbildmodus vergesehen.

Will man das alte Verhalten weiterhin nutzen, ist man auf Dritt-Anbieter angewiesen wie zum Beispiel das BetterTouchTool.

Fazit

Insgesamt erscheint die gesamte Bedienung des Rechners nun sehr viel hakeliger. Ich habe bisher keine einzige Neuerung gefunden, die das Update gerechtfertigt hätte – mit Ausnahme der von Apple erzwungenen Xcode-Version.

XCode 4 kostet nun Geld

Mit der neuen Version iOS 4.3 geht auch eine neue Version der Apple Entwicklungsumgebung XCode einher. Diese ist nun in der Version 4 verfügbar. War allerdings bisher XCode 3 kostenlos verfügbar, sofern man sich kostenlos bei Apple registriert hatte, so können nun nur noch Entwickler XCode kostenlos herunterladen, die im kostenpflichtigen Developer Programm teilnehmen (und damit auch Apps einreichen und veröffentlichen können).

Alle anderen Entwickler, die vielleicht erstmal schauen wollen, was den so möglich ist oder den iPhone Simulator, der mit XCode mitkommt, dazu nutzen wollen, um ihre Webseiten iOS fähig zu machen, müssen ab sofort XCode 4 im App-Spore kaufen. Es kostet dort allerdings nur 3,99 Euro.

Auf der anderen Seiten liest man zur Zeit in den Bewertungen dort sehr häufig von Problemen bei der Installation. Diese scheint wohl regelmäßig abzubrechen. Und das wirft doch ein unschönes Bild auf Apple.

Es bleibt abzuwarten, in welche Richtung sich Apple hier bewegen wird.

Schön finde ich den Kommentar von David Lockwood

Yes, you still needed to pay $99 to be part of the developers program. However, it used to be free if you registered a free account on the website. So now you have to pay for the IDE? What the hell, Apple? I think you need to watch the your old „1984“ style commericals because this is getting to be a bit much.

Debugging fürs iPhone mit Xcode

In einer Freitags-Sitzung des iPhone-Programmierkurses der Stanford Univerity wird sehr anschaulich dargestellt, wie sich ein iPhone Programm mit XCode debuggen lässt. Schritt für Schritt werden die einzelnen Teile des Debuggers erklärt und auch auf typische aber schwer zu findende Fehler hingewiesen. Das sollte man sich wirklich mal anschauen.

Xcode Debugger: Undefined command: „“

Starte ich den Debugger in Xcode 3.1.4, so passiert es immer wieder, dass ich die Fehlermeldung
Undefined command: "". Try "help"  erhalte. Starte ich das Programm ganz normal, läuft es durch. Auch wenn im Debug Modus keine Breakpoints definiert sind, tritt dieser Effekt auf.

Der Witz ist, dass ich es mir schwer fällt, eine Ursache fest zu stellen. Auch bei komplett neu generierten Projekten tritt das Problem auf. Manchmal hilft es, unter  Build ein Clean all Targets auszuführen. Auch ein Neustarten des Debuggers hilft gelegentlich weiter.

Nun fiel mir noch eine Ursache auf: Wenn ich Xcode über das Dock starte, tritt der Fehler nicht auf. Starte ich Xcode aber per open meinProgramm.xcodeproj/ von der Kommandozeile aus, habe ich wieder diesen Fehler.

Automatisches Schließen von geschweiften Klammern in Xcode

Ich habe das Projekt "US-Tastatur Layout" zunächst beendet. Daher hatte ich sofort wieder das Problem, dass ich in Xcode keine automatisch schließenden geschweiften Klammern hatte, obwohl ich die Option automatic insert closing "}" ausgewählt hatte.

Doch auch dafür gibt's eine Lösung: Man wähle unter Preferences -> Key Bindings -> Text Key Bindings -> Insert Open Brace  aus und gebe statt } nun alt-8 ein.

Schön wäre nun, wenn das auch für die runden und eckigen Klammer funktionieren würde.

Xcode von der Command line aus starten

Man steht mit der Shell im Projekt-Verzeichnis, hat vielleicht gerade git- oder subversion-Aktionen vorgenommen und möchte nun das Projekt in xcode bearbeiten. Da wäre es doch nun schön, wenn man dies einfach von der Shell aus machen könnte. Und siehe da, es gibt sogar eine ganz einfach Lösung:

Per

open foo.xcodeproj/

startet man foo.xcodeproj so als hätte man im Finder einen Doppelklick darauf gemacht.

Ein erster Einstieg in die iPhone Programmierung …

Seit einiger Zeit versuche ich, hinter die Geheimnisse der iPhone Programmierung zu gelangen. Dazu habe ich mir das Buch von Markus Stäuble "Programmieren fürs iPhone" besorgt. Zu diesem Buch ist aus meiner Sicht zu sagen, dass es recht schön in die Programmierumgebung Xcode einführt.

Die im Buch angegeben Beispiele meint man auch nachvollziehen zu können. Versucht man sich dann allerdings in daran, die Beispiele abzuändern, so merkt man sehr schnell, dass es mit dem Verstehen doch nicht so weit her ist.

Außerdem habe ich das Gefühl, dass die Beispiele (hier vorallem die Anwendung iRSS) nicht sonderlich sauber programmiert sind. Mir scheinen da ein paar Memory-Leaks vorhanden zu sein. Da ich allerdings vorher weder mit Objective-C geschweige denn mit Cocoa in Kontakt gekommen bin, wäre der direkte Kontakt zum Autor nicht verkehrt. Leider verlief eine Kontakt-Anfrage über die auf obige Homepage angegebene Seite bei Twitter bisher im Sande.

Die Memory-Leaks meine ich mittlerweile per Instruments nachgewiesen zu haben. Das ist dann bitter, wenn man solche Fehler in einem Lehrbuch findet.

Memory Leaks finden mit Xcode

Hat man jahrelang mit Script-Sprachen gearbeitet, so ist die Umstellung auf Objective-C wegen der Pflicht, sich selbst um das Speichermanagement zu kümmern, doch nicht ganz unerheblich.

Glücklicherweise unterstützt Xcode bzw. das integrierte Instruments die Suche nach Memory-Leaks. Ein sehr schöne Anleitung findet man unter http://www.cimgf.com/2008/04/02/cocoa-tutorial-fixing-memory-leaks-with-instruments/