Erste Schritte mit Xcode 4

Ein grosser Schritt vorwärts

Am 09.03.2011 veröf­fentlichte Apple nach ein­er neun­monati­gen Beta Phase Xcode in der neusten Ver­sion 4.0. Xcode bein­hal­tet eine inte­grat­ed devel­op­ment envi­ron­ment, welch­es auf der Fron­tend­seite die Pro­jek­tver­wal­tungs- und Edi­tierumge­bung beste­ht und für die eigentliche Kom­pi­la­tion eine GCC Tool­chain in Ver­sion 4.2.1, sowie den neuen Apple LLVM Kom­pilier­er in Ver­sion 2.0 zur Ver­fü­gung stellt. Als weit­eres Fea­ture wurde eben­falls das clang Fron­tend für LLVM in den Edi­tor inte­gri­ert. Im Fol­gen­den werde ich kurz bericht­en, welche Aspek­te bei Xcode 4 pos­i­tiv auf­fall­en und an welchen noch Arbeit nötig ist.

Die neue GUI

Die auf­fäl­lig­ste Neuerung wird mit Sicher­heit das neue Fen­ster von Xcode sein. Auf den ersten Blick sieht es etwas so aus wie iTunes mit einem Texte­d­i­tor. So ver­fügt das Fen­ster über einen Play und Stop Knopf, sowie ein Dis­play in dem bei iTunes Titel­na­men und die Time­line dargestellt wür­den. In diesem Haupt­fen­ster find­et nun der Haupt­teil der Entwick­lungsar­beit statt. Es kön­nen mehrere Dateien gle­ichzeit­ig dargestellt wer­den, die Benutze­r­ober­fläche ent­wor­fen und in alten Ver­sio­nen der Datei gesucht wer­den. Dies bedeutet im Ver­gle­ich zu Xcode3 eine grosse Umstel­lung, da vorher mein Work­flow so war, daß ich mit einem con­densed Xcode pro­jek­t­fen­ster gear­beit­et habe, in dem ich jede Datei ein neues Fen­ster geöffnet hat­te. Natür­lich bekommt man so sehr schnell ein Fen­ster­chaos wo das Navigieren schw­er fall­en kön­nte. Vor allem hat mich gestört, dass es in Mac OS X keine native Möglichkeit gibt, Fen­ster an einan­der auszuricht­en. Abhil­fe schaffe da das sehr prak­tis­che Tool Opti­mal Lay­out. Dieses Pro­gramm nutzt die Bedi­enung­shil­fe Schnittstelle des Betrieb­ssys­tems, um mit der Tas­tatur Fen­ster ver­schieben und ver­grössern zu kön­nen. Darüber hin­aus ermöglich dieses Pro­gramm auch bis zu vier Fen­ster auszuwählen und die dann nach einem fest­gelegten Schema auf dem Bild­schirm anzuord­nen. In meinem Fall war das das head­er file links und die Imple­men­tierung rechts. So kon­nte ich mich sehr gut auf den Code konzentrieren.

Diese Jonglier­erei ist nun nicht mehr nötig. Xcode 4 stellt neben einem Stan­dard Modus, in dem die kom­plette Bre­ite des Fen­sters von einem Edi­tor­bere­ich gefüllt wird, auch einen Assis­tant Modus zur Ver­fü­gung, in dem das Haupt­fen­ster 2 oder mehr Untered­i­toren füllen kön­nen. Natür­lich ist die Möglichkeit Edi­tor­fen­ster zu split­ten und zwei Dateien gle­ichzeit­ig zu betra­cht­en nicht neu, Emacs und auch VIM kon­nten das schon seit ein­er gefühlten Ewigkeit. Was mir jedoch neu vorkam ist die Möglichkeit, im Hil­fsed­i­tor eine Datei anzeigen zu lassen, die in einem bes­timmten Ver­hält­nis zu der aus­gewählten Datei ste­ht. Das kann beispiel­sweise das head­er file zur gewählten Datei sein, aber auch beispiel­sweise die Eltern­klasse, was beson­ders dann nüt­zlich wird, wenn man eine neue Unterk­lasse imple­men­tieren möchte. Neben diesen Automa­tis­men kann man auch die Datei manuell auswählen.

Einen beson­deren Anwen­dungs­fall des Assis­tant Modus ist das Entwer­fen von graphis­chen Benutze­r­ober­flächen mit dem nun in Xcode inte­gri­erten Inter­face Builder. Man kann nun die XIB Datei öff­nen und daneben den Quell­text des zuständi­gen Con­trollers sehen. So kann man auch mit dieser neuen Ver­sion Out­lets erzeu­gen, indem man mit Recht­sklick von einem XIB Objekt direkt rüber in den Texte­d­i­tor zieht. Mit Sicher­heit ist dies eine grosse Verbesserung, da man vorher doch einige Zeit beschäftigt war, die graphis­chen Bedi­enele­mente und den Quell­text syn­chron zu hal­ten. Oft wur­den da beim Wech­sel der Pro­gramm ger­ade von Anfängern vergessen, Out­lets zu verbinden, was zu lustigem Nachricht­en­schick­en an nil führt, was zwar Objective‑C erlaubt, aber in diesem Falle recht zweck­los ist.

Das Beste ist unter der Haube

Was einem erst auf den zweit­en Blick und beim eigentlichen Ein­satz auf­fällt ist das sofor­tige Markieren von Fehlern während man den Code noch ein­gibt. So wird sofort markiert, wenn beispiel­sweise der Typ der Vari­ablen falsch ist oder wenn ein Tippfehler gemacht wurde. Bei offen­sichtlichen Fehlern schlägt Xcode4 sog­ar eine Lösung vor. Die Zeit­en, in denen man erst den Com­pil­er starten mußte, um rauszufind­en, daß man sich irgend­wo ver­tippt hat sind damit vor­bei. Die Tech­nik, die dahin­ter­steckt ist die mod­erne Com­pil­ertech­nik und der Clang sta­t­ic analyzer.

Neben den neuen Din­gen die dazugekom­men sind, sollte man auch mal erwäh­nen, was man nicht mehr mit Xcode4 machen kann: code für Pow­er­PC Prozes­soren com­pilieren, dafür fehlt die entsprechende GCC Tool­chain. Eben­falls wur­den auch die lega­cy optio­nen von Mac OS X 10.4 eingestellt. Es gibt anscheinend Möglichkeit­en, die fehlen­den Kom­po­nen­ten, beson­ders die PPC Unter­stützung aus einem alten Xcode3 dranzubasteln, ob das sich aber auf Dauer bewährt ist fraglich.

Apple macht in diesem release von Xcode4 auch einen klaren Schritt weg von GCC hin zu LLVM und damit auch weg von GDB hin zu LLDB. Das Pro­gramm ist schneller erzeugt, der Code läuft schneller und ist auch deut­lich kleiner.

Das Fazit

Xcode4 ist ein gross­er Schritt in die richtige Rich­tung. Über jeden Zweifel erhaben ist die neue Tool­chain, die mit LLVM und LLDB neueste Com­pil­ertech­nik ein­set­zen. Der schon von vorheri­gen Xcode Ver­sio­nen bekan­nte Clang sta­t­ic ana­lyz­er ist noch mal eine ganze Ecke bess­er gewor­den und der Edi­tor zeigt seine gefun­de­nen Fehler und War­nun­gen direkt an.

Über die Benutze­r­ober­fläche ist erst mal zu sagen, daß es ein­er­seits gut ist, daß es endlich mit dem Fen­ster­ver­hau vor­bei ist, jedoch wird dies durch ein riesiges mono­lithis­ches Fen­ster erkauft. Wer gerne mehrere Pro­gramme mit ihren Fen­stern kun­stvoll auf dem Bild­schirm anord­net, kann durch dieses neue Design gezwun­gen wer­den, seinen Arbeitsablauf umzustellen.

Gut gelun­gen ist die Inte­gra­tion von Inter­face Builder direkt in Xcode. Beson­ders das Erstellen von neuen Out­lets geht sehr schnell von der Hand und dort spielt auch der neue dop­pelte Assis­tant Edi­tor seine Vorzüge aus: Links die graphis­che Benutze­r­ober­fläche und rechts daneben ihr zuge­höriger Con­troller­code, so hat man alles direkt im Blick

Xcode4 hat noch seine Schwächen was die Sta­bil­ität ange­ht, aber das wird nur eine Frage der Zeit sein, bis Apple diese behoben hat. Mir gefällt es sehr gut, allerd­ings ist die Umstel­lung ger­ade was das Build Sys­tem und die Pro­jek­te­in­stel­lun­gen ange­ht nicht triv­ial. Nach­dem diese Hür­den über­wun­den sind ist pro­gram­mieren mit Xcode4 deut­lich effizien­ter als bei seinen Vorgängern. Inwiefern sich dies in besser­er Code- und damit let­z­ten­den­des auch Pro­gram­mqual­ität wider­spiegelt wird die Zukun­ft zeigen.

New PasteBinIt Beta

To make the small Paste­BinIt tool more use­ful on the Mac it has been extend­ed to take full advan­tage of the built-in ser­vices menu in Mac OS X. You can now select text through­out the sys­tem and choose Post to Pastebin.com from the menu. The Paste­BinIt win­dow opens with the marked text already in its con­tent sec­tion and places the cur­sor in the title field. The new Paste­bin is now only one click away.

Anoth­er new fea­ture is dock tile drop sup­port. If you would like to cre­ate a paste­bin from a text file in the find­er or from the desk­top, just drop the file icon on the dock tile.

Due to prob­lems with sign­ing this update will be announced by the built-in updater, but instal­la­tion will fail due to sign­ing issues. You have to down­load this release man­u­al­ly and move it into your appli­ca­tions folder.

Thanks for test­ing, all feed­back will be appreciated

New Beta of Pastebin.com Tool is Online

Final­ly I fin­ished to pub­lish the first beta release of my new tool for cre­at­ing pastebin.com entries on Mac OS X. Although the web inter­face of pastebin.com is very neat, some­times a spe­cial client comes in handy.

In the first beta the tool can be used to post code or any text to the serv­er and adjust all the para­me­ters, such as post expi­ra­tion time, syn­tax high­light­ing, paste title and if the paste is private.

Please feel free to check out this beta. Your feed­back is appreciated

Getting started

Hav­ing my serv­er up and run­ning, Word­Press installed in a way I like it, I am get­ting start­ed with my new web page.

Until now noth­ing inter­est­ing can be found here, how­ev­er after find­ing and adapt­ing the right theme for me I will be blog­ging about tech­ni­cal stuff and my pro­gram­ming projects here.

Hope you will enjoy it.