3. MAC APIs (POSIX, CORE und
COCOA) in
Delphi verwenden
Die
MAC-Betriebsystem-Layer Während die ersten beiden Layer über ein konventionelles C-Interface ansprechbar
sind, ist das COCOA Layer über ein spezielles Objective-C Interface erreichbar. Eine
Reihe von Funktionen steht letztlich in allen oder mehreren Schichten zur Verfügung.
Zum Beispiel können Sie den Computernamen mit einer POSIX-Funktion
(Gethostname) abfragen oder über das COCOA-Interface NSHost (Host.Name),
wobei letzteres einer besonderen Aufruftechnik bedarf, aber dazu später. So ist nun die Funktion in der UniStdApi.inc implementiert: COREAPI Hier wird die Core-Foundation Funktion „CFUserNotifiationDisplayAlert“ implementiert. Wir benutzen hier nur eine ganz einfache Implementierung, bei Bedarf kann die Alert-Funktion sogar noch mit einer TimeOut-Zeit angezeigt werden, mit einem weiteren Button und User-definierten Texten für den Schalter. Die Funktion CFStringCreateWithCharacters erzeugt das String-Objekt.
Alle Funktionen, deren Namen ein „Create“ oder ein „Copy“ enthalten, bewirken bei
deren Aufruf, dass der Referenzzähler für das Objekt um den Wert „1“ erhöht wird.
Nach der Verwendung der Objekte müssen Sie diese daher wieder mit der Funktion
„CFRelease“ freigeben, damit der Referenzzähler wieder um den Wert „1“ verringert
werden kann. Wenn Sie das nicht tun, behalten Sie Restobjekte im Speicher, die nach
Beendigung Ihres Programms erhalten bleiben. Ich weiß nicht, inwiefern die
Programme für den MAC Appstore auf solche Mängel überprüft werden, ich rate hier vorbeugend zur sorgsamen Arbeit mit dem Umgang solcher Objekte. |
COCOA API Die COCOA „Objekte“ (Objetive-C Classes, Metaclasses und Protocols) sind i.d.R. als
Interfaces implementiert. Für das NSString-Objekt/Klasse finden Sie daher direkt zwei
Interface-Implementationen, einmal als Mit diesem
äußerst nützlichen COCOA Objekt können Sie auf dem MAC z.B. vom
aktuellen Browser eine Internetseite anzeigen lassen. Zwar sind auch die meisten COCOA Objekte reference counted, aber dies funktioniert i.d.R. automatisch, im Beispielsfall ist daher weder ein "Retain" noch ein "Release" für die oder nach der Verwendung des Objekts erforderlich. Weitere Beispiele, zusätzliche Erläuterungstexte zu den technischen Zusammenhängen und nützliche Links in die Apple-Developer-Library zu Core Foundation bzw. COCOA Objekten finden Sie in der aktualisierten Version meines eBooks. |
Also, was ist Ihre Meinung zur Verwendung der MAC-Apis unter Delphi, wie sind Ihre eigenen Erfahrungen? Wenn Sie Anregungen zu Themen haben, lassen Sie es mich gerne wissen. Meine Mailadresse finden Sie oben auf der Seite unter dem Link "Anbieterkennzeichnung & Kontakt". Über meinen Hastasoft-Twitter Account werde ich posten, wenn neue Blogbeiträge zur Verfügung stehen. Wenn Sie wollen, klinken Sie sich dort ein (siehe meine Hastasoft-Seite). Der nächste Blogbeitrag wird sich mit Grafikbearbeitung unter MAC OS X befassen und erläutern, was anders am TBitmap unter FireMonkey / MAC OS X ist und wie grundlegende Grafikfunktionen genutzt werden. Viel Erfolg mit Delphi und FireMonkey! Harry Stahl, 08.04.2013 |