Freigeben über


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, nuintbei 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.