BOOL gut lesbar in NSLog ausgeben

SchalterFür die Lesbarkeit wäre es ein großer Vorteil, wenn man BOOL-Werte in Objective-C auch als „YES“ oder „NO“ ausgeben könnte. Von Haus aus zeigt NSLog die Werte als Integer.

Mit einer einfachen Abfage innerhalb von NSLog lassen sich Boolsche Werte aber tatsächlich als solche in der Konsole ausgeben. Die Abfage prüft den Zustand von „meinBool“ und gibt auf Basis dessen dann entweder den String „YES“ oder „NO“ aus.

Zur besseren Auffindbarkeit sind Doppelkreuze vor und hinter dem Gesamtstring eingefügt:

NSLog (@"##### Wert von meinBool = %@ #####", meinBool ? @"YES" : @"NO");

Interface Builder oder lieber doch nicht

Xcode-Interface-Builder-Kombi in Xcode 4

Als ich meine ersten Schritte mit der Kombination Xcode und Interface Builder machte, fiel mir die Verwendung von Interface Builder sehr schwer. Ich habe einfach nicht verstanden, was da passiert, wenn ich einen UIButton respektive einen NSButton auf das mir angebotene Fenster gezogen habe. Was „IBAction“ oder „IBOutlet“ sind, blieb mir auch einfach ein Rätsel. Ich war so froh, als ich sah, dass man das UI auch programmatisch erstellen kann.

Mit meinem Problem war ich aber nicht allein. Entwickler Ben Teese leitet seinen Blog-Post mit diesen Worten ein: „I don’t understand why you’d use Interface Builder to create a UI for an iPhone application.“
Auch Entwickler Shaun Ervine schreibt: „If you’re new to iOS development, don’t touch Interface Builder until you are capable of building UIs programatically.“

Immer wenn ich erfahrene Entwickler traf, fragte ich sie, wie sie es mit dem Interface Builder hielten und die Antwort war fast immer: „Natürlich arbeite ich mit dem Interface Builder. Ohne ist das Erstellen des UI viel zu mühsam und dauert viel zu lange.“ Hmm, am Interface Builder musste echt etwas dran sein … Ich nahm mir vor, es nochmals zu versuchen.

Apple kam mir mit Xcode 4 entgegen, denn nun hatten sie den Interface Builder in Xcode integriert und der Arbeitsfluss zwischen Code und UI kommt mir deutlich beschleunigt vor.

Nach mehreren Projekten, bei denen ich die gesamte Oberfläche programmatisch erstellt hatte, stellte ich mir so langsam die Frage, ob das zumindest bei Oberflächen-Standards nicht schneller und einfacher gehen könnte. Glücklicherweise hatte ich eine Vermutung, dass es nun anscheinend Zeit für den Interface Builder sei.

Tatsächlich bin ich nun inzwischen soweit, dass ich bei Standards schnell die Oberfläche in Interface Builder anlege, meine IBOutlets in Xcode erstelle und fix die Verbindungen ziehe. Bei etwas komplizierteren Oberflächen bin ich aber ganz froh, dass ich das UI weiterhin auch programmatisch erstellen kann. Vielleicht bin ich auch bei den Sachen bald beim Interface Builder.

Mein Tipp an Xcode-Neulinge ist dann tatsächlich ebenfalls: Wenn euch der Interface Builder anfangs verwirrt, dann lasst ihn weg und baut euer UI programmatisch. Vermutlich werdet ihr selbst merken, wann es Zeit ist, den Interface Builder einzusetzen.