Apple Platform (iOS und Mac)
Codefreigabe
Für Elemente Ihres Codes, die keine Benutzeroberflächenelemente enthalten, besteht die beste Möglichkeit zum Freigeben von Code zwischen iOS und Mac weiterhin in der Verwendung von portablen Klassenbibliotheken.
Für Code, der eine gewisse Benutzeroberflächenarbeit erledigen muss und dennoch freigegeben werden soll, sollten Sie freigegebene Projekte verwenden, mit denen Sie Code für die Freigabe in einem einzelnen Projekt platzieren und ihn sowohl mit Mac als auch mit iOS kompilieren lassen können, wenn darauf verwiesen wird.
Unified API
Die Einheitliche API für iOS- und Mac-Projekte verwendet dieselben Namespaces für Frameworks, sodass dieselbe Codedatei für beide Plattformen für die nahtlose Codefreigabe verwendet werden kann. Außerdem werden sowohl 32- als auch 64-Bit-Builds aktiviert. Die Einheitliche API ist seit Anfang 2015 der Vorlagenstandard und wird für alle neuen Projekte empfohlen. Nur Unified API-Projekte können an die App Store übermittelt werden.
Klassische APIs
Hinweis
Veraltet des klassischen Profils: Da neue Plattformen in Xamarin.iOS hinzugefügt werden, beginnen wir damit, Features aus dem klassischen Profil (monotouch.dll) schrittweise zu veralten. Beispielsweise wurde die Nicht-NRC-Option (new-ref-count) entfernt. NRC wurde immer für alle einheitlichen Anwendungen aktiviert (d. h. nicht-NRC war nie eine Option) und weist keine bekannten Probleme auf. In zukünftigen Releases wird die Option, Boehm als Garbage Collector zu verwenden, entfernt. Dies war auch eine Option, die für einheitliche Anwendungen nie verfügbar war. Die vollständige Entfernung des klassischen Supports ist für Herbst 2016 mit der Veröffentlichung von Xamarin.iOS 10.0 geplant.
Die ursprünglichen (nicht vereinheitlichten) Xamarin.iOS- und Xamarin.Mac-APIs erschwerten die Codefreigabe, da native Frameworks entweder MonoTouch.
oder MonoMac.
Namespacepräfixe hatten. Wir haben einige leere Namespaces bereitgestellt, mit denen Entwickler Code freigeben können, indem Sie Anweisungen hinzufügen using
, die sowohl auf MonoMac- als auch auf MonoTouch-Namespaces in derselben Datei verweisen, aber dies war ein wenig hässlich. Die klassische API sollte weiterhin nur in Legacy-Apps verwendet werden, die intern verteilt sind (ein Upgrade auf die einheitliche API wird empfohlen).
Aktualisieren von der klassischen auf die einheitliche API
Es gibt ausführliche Anweisungen zum Aktualisieren jeder Anwendung von der klassischen auf die einheitliche API.
Bindungsbibliotheken Objective-C
Mit Xamarin können Sie native Bibliotheken mit Bindungen in Ihre Apps integrieren. In diesem Abschnitt wird Folgendes beschrieben:
- Funktionsweise von Bindungen
- manuelles Erstellen eines Bindungsprojekts, mit dem Sie Code in Xamarin einbinden Objective-C können, und
- wie Sie unser Objective Sharpie-Tool verwenden, um den Prozess zu automatisieren.
Native Verweise
Native Mac/iOS-Typen
Um 32- und 64-Bit-Code transparent von C# und F# zu unterstützen, führen wir neue Datentypen ein. Hier erhalten Sie weitere Informationen zu diesen Tools.
Erstellen von 32- und 64-Bit-Apps
Was Sie wissen müssen, um 32- und 64-Bit-Anwendungen zu unterstützen.
Arbeiten mit nativen Typen in plattformübergreifenden Apps
In diesem Artikel wird die Verwendung der neuen iOS Unified API Native-Typen (nint
, , nfloat
) in einer plattformübergreifenden Anwendung behandelt, nuint
bei der Code für Nicht-iOS-Geräte wie Android oder Windows Phone-Betriebssysteme freigegeben wird.
Es bietet Einen Einblick, wann die nativen Typen verwendet werden sollen, und bietet mehrere mögliche Lösungen für Fälle, in denen der neue Typ mit plattformübergreifendem Code verwendet werden muss.
HttpClient-Stapel und SSL/TLS-Implementierungsauswahl
Der neue HttpClient Stack Selector steuert, welche HttpClient-Implementierung in Ihrer Xamarin.iOS-, Xamarin.tvOS- und Xamarin.Mac-App verwendet werden soll. Sie können jetzt zu einer Implementierung wechseln, die die nativen Transporte von iOS, tvOS oder OS X verwendet (NSUrlSession
oder CFNetwork
abhängig vom Betriebssystem).
SSL (Secure Socket Layer) und sein Nachfolger TLS (Transport Layer Security) bieten Unterstützung für HTTP- und andere Netzwerkverbindungen über System.Net.Security.SslStream
. Die neue Buildoption für die SSL-/TLS-Implementierung wechselt zwischen dem eigenen TLS-Stapel von Mono und dem TLS-Stapel von Apple, der in Mac und iOS vorhanden ist.