Apples Software-Zeitenwende: Wie iOS-Apps in Zukunft auf dem Mac arbeiten

Apple kündigte gestern auf der Keynote zur Worldwide Developers Conference 2018 an, dass vier von iOS bekannte Programme mit macOS Mojave auch auf den Mac portiert werden - so steht in 10.14 nun die Aktien-App, die Apple-News-App, Sprachmemos und die Home-App zur Verfügung. Schon länger wundern sich Nutzer, warum manche Anwendungen, die Apple schon lange auf dem iPhone oder iPad bereitstellt, nicht auf dem Mac zu finden sind - der Grund dahinter ist, dass Apple auf dem Mac ein anderes Entwickler-Framework zur Gestaltung von Benutzeroberflächen einsetzt als auf dem iPhone oder iPad. Somit musste Apple oder auch Dritthersteller die Nutzeroberfläche häufig doppelt implementieren, wollte man eine App für Mac und iOS herausbringen.

Am Ende der Vorstellung gab Apple bekannt, wie diese von iOS bekannten Apps auf den Mac portiert wurden: Man implementierte keine zweite Benutzeroberfläche, sondern portierte stattdessen das Benutzeroberflächen-Framework UIKit auf den Mac, so dass im Idealfall die Apps mit geringen Anpassungen auf dem Mac lauffähig sind.

Nur mit Swift?
Schaut man sich einmal die Innereien von macOS Mojave an, findet sich schnell unter folgendem Pfad die neue UIKit-Entwicklerbibliothek:
/System/Library/PrivateFrameworks/Swift/libswiftUIKit.dylib
Hierbei handelt es sich um ein Swift-Framework - ein entsprechendes Pendant für Objective-C existiert nicht. Dies könnte bedeuten, dass nur in Swift implementierte iOS-Programme auf den Mac portierbar sind. Es gibt zwar Möglichkeiten, auch Swift-Libraries aus Objective-C heraus zu benutzen - allerdings müsste Apple hierfür Vorkehrungen bei der Implementierung von UIKit für den Mac getroffen haben.

Im Ordner "System" auf oberster Dateisystemebene findet sich neben dem bekannten "Library"-Ordner ein neuer "iOSSupport"-Ordner. In diesem befinden sich weitere, von iOS her geläufige Frameworks - auf den Mac portierte iOS-Anwendungen nutzen wohl diesen Ordner als Einstiegspunkt zum Laden von Entwicklerbibliotheken.


Bekannte Funktionen und Klassen aus iOS
Wagt man einen Blick in die Bibliotheken, findet man dort fast alle aus iOS bekannte Klassen wieder: UIApplication, UIViewController, UIView, UIColor, UIFont, UIEdgeInsets, UILayoutPriority und viele weitere. Apple portierte sogar den Einstiegspunkt eines iOS-Programms, nämlich die Klasse "UIApplication". Daher ist davon auszugehen, dass Apple es dem Entwickler weitgehend ersparen möchte, macOS-AppKit-Klassen bei der Portierung einer App nutzen zu müssen.

Bei Apple schon länger intern im Einsatz?
Von Zeit zu Zeit versieht Apple manche Funktionalitäten mit einer Deprecation-Warnung. Dies bedeutet, dass Apple mittel- bis langfristig vorhat, diese aus den Frameworks zu streichen und meist durch eine neuere Methodik zu ersetzen. Genau dies ist vor einer Zeit auf iOS mit UIActionSheet und UIAlertView geschehen - trotzdem finden sich selbst diese Klassen in UIKit auf dem Mac wieder.

Wahrscheinlich testet Apple das UIKit für den Mac daher schon erheblich länger intern mit eigenen iOS-Apps - und nicht erst seit Entwicklungsbeginn von macOS Mojave.

Mac-Spezifische Anpassungen
Der Mac bringt diverse Unterschiede im Vergleich zu einem iOS-Gerät mit: Statt des Fingers dienen eine Maus und Tastatur für die Nutzereingaben. Auch bringen das MacBook Pro seit 2016 die Touch Bar mit - auf einem iOS-Gerät wäre diese sinnfrei.

Apple fügt daher dem UIKit auf dem Mac Klassen hinzu, um genau mit diesen Sonderfällen umzugehen. So findet man zum Beispiel die Klassen UITouchBar (Steuerung der Touch Bar) und UIHoverGestureRecognizer (zum Erkennen, ob der Mauszeiger sich über einen Bereich in einem Fenster befindet) wieder, mit denen Apple Mac-spezifische Funktionalitäten in UIKit einbaut.

Mittelfristiger Ersatz für den App Kit?
Das UIKit für den Mac ist so angelegt, dass der Entwickler eine komplette App damit programmiert - samt plattformspezifischen Anpassungen für den Mac. Das besondere hierbei ist, dass der Entwickler wohl keinerlei Kontakt zu dem derzeitigen Framework für Benutzeroberflächen auf dem Mac ("AppKit") haben muss, um ein Programm auf den Mac zu portieren.

Daher ist mittelfristig davon auszugehen, dass Apple UIKit für den Mac so erweitert, dass auch neue Mac-Programme mittels UIKit implementiert werden sollen. Momentan soll sich UIKit für den Mac erstmal an Entwickler richten, die einfache iOS-Programme auch auf dem Mac anbieten möchten - allerdings wird Apple langfristig keine zwei vollwertige UI-Frameworks für den Mac anbieten, da der Arbeitsaufwand enorm ist.

Kommentare

MLOS05.06.18 13:17
Wie sieht es mit den Accessibility-Klassen aus? VoiceOver auf dem Mac funktioniert ja anders, aber wahrscheinlich deckt sich das dann ähnlich wie bei den weiteren Unterschieden wie Tastatur & Maus vs. Toucheingaben.
"Es ist ein unerwarteter Fehler aufgetreten" - Welche Fehler wurden denn erwartet?
0
chrisjar05.06.18 13:26
Das könnte aber andersrum vielleicht auch ermöglichen, dass man Maus oder Trackpad auch mal am iPad nutzen kann. Oder der iMac (Pro) eventuell mal Pencil Support bekommt. Das könnte am Display dann schon recht interessant zum Zeichnen und Arbeiten sein (wie das Surface Studio).
0
nopeecee
nopeecee05.06.18 13:38
Also grundsätzlich finde ich es gut wenn einige iOS Apps unter macOS laufen. Was mir nicht gefällt ist das es wohl nicht mehr ist, als die iOS App im macOS Fenster und das finde ich zB bei HomeKit unpassend.
Auch in Foren kann man höflich miteinander umgehen
0
MLOS05.06.18 14:03
nopeecee

Wird wahrscheinlich alles noch optimiert und ergänzt werden.
"Es ist ein unerwarteter Fehler aufgetreten" - Welche Fehler wurden denn erwartet?
0

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.

OK MacTechNews.de verwendet Cookies unter anderem für personalisierte Inhalte, Seitenanalyse und bei der Auslieferung von Google-Anzeigen. Dies war zwar schon immer so, auf Wunsch der EU muss nun jedoch explizit darauf hingewiesen werden. Durch Nutzung der Website erklären Sie sich damit einverstanden. Weitere Informationen