Share via


Objective Sharpie Release History

3.4 (11. Oktober 2017)

Herunterladen v3.4.0

  • Unterstützung für Xcode 9: iOS 11, macOS 10.13, tvOS 11 und watchOS 4
  • Probleme mit SIMD und Tgmath sollten jetzt behoben werden
  • Telemetrie wurde vollständig entfernt.

3.3 (3. August 2016)

3.2 (14. Juni 2016)

  • Unterstützung für Xcode 8 Beta 1, iOS 10, macOS 10.12, tvOS 10 und watchOS 3.

3.1 (31. Mai 2016)

  • Unterstützung für CocoaPods 1.0
  • Verbesserte Zuverlässigkeit der CocoaPods-Bindung durch den Aufbau einer nativen .framework und anschließenden Bindung
  • Kopieren Sie CocoaPods und die Bindungsdefinition .framework in ein Binding Verzeichnis, um die Integration mit Xamarin.iOS- und Xamarin.Mac-Bindungsprojekten zu vereinfachen

3.0 (5. Oktober 2015)

  • Unterstützung für neue Objective-C Sprachfeatures, einschließlich einfacher Generika und Nullierbarkeit, wie in Xcode 7 eingeführt
  • Unterstützung für die neuesten iOS- und Mac-SDKs.
  • Xcode-Projektaufbau und Analyseunterstützung! Sie können jetzt ein vollständiges Xcode-Projekt an Objective Sharpie übergeben und es wird am besten tun, um das richtige Zu tun (z. B. sharpie bind Project.xcodeproj -sdk ios).
  • CocoaPods-Unterstützung ! Sie können CocoaPods jetzt direkt über Objective Sharpie konfigurieren, erstellen und binden (z. B. sharpie pod init ios AFNetworking && sharpie pod bind).
  • Wenn Bindungsframeworks aktiviert werden, werden Clang-Module aktiviert, wenn das Framework sie unterstützt, was zu der korrekten Analyse eines Frameworks führt, da die Struktur des Frameworks durch seine module.modulemapdefiniert wird.
  • Analysieren Sie bei Xcode-Projekten, die ein Frameworkprodukt erstellen, dieses Produkt anstelle von Zwischenproduktzielen als Nicht-Framework-Ziele in einem Xcode-Projekt möglicherweise noch Mehrdeutigkeiten, die nicht automatisch aufgelöst werden können.

2.1.6 (17. März 2015)

  • Feste Bindung des binären Operators: Die linke Seite des Ausdrucks wurde fälschlicherweise mit der rechten Seite ausgetauscht (z. B. 1 << 0 falsch gebunden als 0 << 1). Vielen Dank an Adam Kemp, um das zu notieren!
  • Es wurde ein Problem behoben, bei NSIntegerNSUInteger dem anstelle von nuintnint und uint auf i386 ein Problem bestehtint. -DNS_BUILD_32_LIKE_64 Es wurde nun an Clang übergeben, um die Analyse objc/NSObjCRuntime.h wie erwartet auf i386 zu erledigen.
  • Die Standardarchitektur für Mac OS X SDKs (z. B. -sdk macosx10.10) ist jetzt x86_64 anstelle von i386, sodass -arch sie weggelassen werden können, es sei denn, die Standardeinstellung wird überschrieben.

2.1.0 (15. März 2015)

  • sizeof C-Ausdrücke, deren Argumenttyp keinem C#-Grundtyp zugeordnet ist, werden in Clang ausgewertet und als ganzzahliges Literal gebunden, um zu vermeiden, dass ungültige C#-Werte generiert werden.
  • Korrigieren Sie Objective-C die Syntax für Eigenschaften, deren Typ ein Block ist (Objective-C Code wird in Kommentaren über gebundenen Deklarationen angezeigt).
  • Binden Sie zerklingende Typen als ihren ursprünglichen Typ (int[] verfallen int* während der semantischen Analyse in Clang, binden Sie sie aber als originale schreibgeschützt int[] ).

Vielen Dank an Dave Dunkin, dass viele der in dieser Point Release behobenen Fehler gemeldet werden!

2.0.0: 9. März 2015

Objective Sharpie 2.0 ist eine Hauptversion, die einen verbesserten Clang-basierten Treiber und Parser und ein neues NRefactory-basiertes Bindungsmodul enthält. Diese verbesserten Komponenten sorgen für wesentlich bessere Bindungen, insbesondere bei der Typbindung. Viele weitere Verbesserungen wurden vorgenommen, die intern in Objective Sharpie sind, was viele benutzer sichtbare Features in zukünftigen Versionen liefern wird.

Objective Sharpie 2.0 basiert auf Clang 3.6.1.

Verbesserungen bei der Typbindung

  • Objective-C Blöcke werden jetzt unterstützt. Dazu gehören anonyme/inline-Blöcke und -Blöcke, die über benannt werden typedef. Anonyme Blöcke werden als System.ActionSystem.Func Stellvertretungen gebunden, während benannte Blöcke als stark benannte delegate Typen gebunden werden.

  • Es gibt eine verbesserte Benennungshuristik für anonyme Enumerationen, die unmittelbar einer typedef Auflösung zu einem integrierten integralen Typ wie long oder int.

  • C-Zeiger werden jetzt anstelle von System.IntPtrC#-Zeigern als C#unsafe-Zeiger gebunden. Dies führt zu mehr Klarheit bei der Bindung, wenn Sie Zeigerparameter in out oder ref Parameter umwandeln möchten. Es ist nicht möglich, immer abzuleiten, ob ein Parameter sein out soll oder ref, sodass der Zeiger in der Bindung beibehalten wird, um eine einfachere Überwachung zu ermöglichen.

  • Eine Ausnahme der obigen Zeigerbindung ist, wenn ein 2-Rang-Zeiger auf ein Objective-C Objekt als Parameter gefunden wird. In diesen Fällen ist die Konvention überwiegend und der Parameter wird gebunden als out (z. B. NSError **errorout NSError error).

Attribut überprüfen

Sie werden häufig feststellen, dass Bindungen, die von Objective Sharpie produziert werden, jetzt mit dem [Verify] Attribut kommentiert werden. Diese Attribute geben an, dass Sie überprüfen sollten, ob Objective Sharpie das richtige gemacht hat, indem Sie die Bindung mit der ursprünglichen C/Objective-C-Deklaration vergleichen (die in einem Kommentar oberhalb der gebundenen Deklaration angegeben wird).

Die Überprüfung wird für alle gebundenen Deklarationen empfohlen , ist jedoch höchstwahrscheinlich für Deklarationen erforderlich , die mit dem [Verify] Attribut versehen sind. Dies liegt daran, dass in vielen Situationen nicht genügend Metadaten im ursprünglichen systemeigenen Quellcode vorhanden sind, um zu ermitteln, wie eine Bindung am besten erzeugt werden kann. Möglicherweise müssen Sie auf Dokumentations- oder Codekommentare in den Headerdateien verweisen, um die beste Bindungsentscheidung zu treffen.

Weitere Informationen finden Sie in der Dokumentation "Attribute überprüfen".

Weitere wichtige Verbesserungen

  • using Anweisungen werden jetzt basierend auf gebundenen Typen generiert. Wenn beispielsweise eine NSURL Bindung erfolgt, wird auch eine using Foundation; Anweisung generiert.

  • struct und union Erklärungen werden jetzt gebunden sein, indem sie den [FieldOffset] Trick für Gewerkschaften verwenden.

  • Enumerationswerte mit konstanten Ausdrucksinitialisierern sind jetzt ordnungsgemäß gebunden. Der vollständige Ausdruck wird in C# übersetzt.

  • Variadische Methoden und Blöcke sind jetzt gebunden.

  • Frameworks werden jetzt über die -framework Option unterstützt. Weitere Informationen finden Sie in der Dokumentation zu Binding Native Frameworks .

  • Objective-CQuellcode wird jetzt automatisch erkannt, wodurch die Notwendigkeit beseitigt werden sollte, manuell an Clang zu übergeben oder -xobjective-c an Clang zu übergeben-ObjC.

  • Die Verwendung des Clang-Moduls (@import) wird jetzt automatisch erkannt, wodurch die Notwendigkeit für Bibliotheken, die die neue Modulunterstützung in Clang verwenden, nicht manuell an Clang übergeben -fmodules werden muss.

  • Die Xamarin Unified API ist jetzt das Standardbindungsziel; verwenden Sie die -classic Option, um die nur klassische 32-Bit-API als Ziel zu verwenden.

Wichtige Programmfehlerbehebungen

  • Beheben instancetype der Bindung bei Verwendung in einer Objective-C Kategorie
  • Vollständige Namenskategorien Objective-C
  • Präfixprotokolle Objective-C mit I (z. B. INSCopying anstelle von NSCopying)

1.1.35: 21. Dezember 2014

Kleinere Fehlerbehebungen

1.1.1: 15. Dezember 2014

1.1.1 war die erste Hauptversion nach 1,5 Jahren interner Verwendung und Entwicklung bei Xamarin nach der ersten Vorschau von Objective Sharpie im April 2013. Diese Version ist die erste, die allgemein als stabil und verwendbar für eine Vielzahl von nativen Bibliotheken mit einem neuen Clang-Back-End betrachtet wird.