js' blog

libobjfw: Beseitigung der Abhängigkeit von Object & iPhone-Support
Created: 10.04.2009 19:10 UTC

Ich habe in libobjfw jetzt die Abhängigkeit von Object und somit zu einem großen Teil die Abhängigkeit von der verwendeten Runtime beseitigt. Warum ich mir so einen Streß gebe? Apple hat bei ihrer ObjC2-Runtime sogut wie alles deprecated und es ist einfach ein riesen PITA, das Zeug zu benutzen. Und auf dem iPhone gibt es z.B. kein ObjC1 mehr, bei Snow Leopard wird das wohl genauso sein, zumindest in 64 bit. Wird also in Zukunft vermutlich nicht nur für das iPhone nützlich sein.

Naja, jedenfalls hatte ich mich ja letztens beschwert, daß es mir nicht Lowlevel genug wäre. Das muß ich jetzt echt zurück nehmen. Viel weiter Lowlevel geht es nicht, dann müsste ich schon gcc patchen, damit er eine komplett eigene Runtime supported ;). Ich habe jetzt alles von Object, was ich verwendet habe, neugeschrieben - einmal für die GNU Runtime und einmal für die Apple Runtime. Ich werde aber auch noch weitere Methoden von Object, die noch nicht zum Einsatz kommen, für OFObject schreiben.

Damit dürfte jetzt libobjfw das erste ObjC-Framework sein, das auf dem iPhone läuft und nicht von Apple ist! :)

Ein weiterer netter Nebeneffekt ist, daß OFConstString jetzt endlich auf OFObject basieren kann, da das jetzt einen eigenen Allokator hat, der einfach den Memory Pool und den Reference Counter vor die IVars packt. Die Variablen vor den IVars heißen bei libobjfw übrigens - sehr einfallsreich - Pre-IVars. Das ganze muß vor die IVars, weil gcc bei konstanten Strings selber die Instanz anlegt und erwartet, daß er den String und die Länge als erste IVars eintragen kann. Durch das Nutzen von Pre-IVars konnten dann auch direkt 2 Protocols entfernt werden, die man dadurch nicht mehr braucht.

So, und zum Schluß gibt es natürlich auch noch was für die Augen:
libobjfw auf dem iPhone

Eine kleine Ernüchterung habe ich allerdings noch: Es gibt noch 2 Kleinigkeiten, die ich fixen muß. Aber danach wird es dann einen größeren Commit geben :).