Udostępnij za pośrednictwem


Objective Sharpie — historia wydania

3.4 (11 października 2017 r.)

Pobierz 3.4.0

  • Obsługa programu Xcode 9: iOS 11, macOS 10.13, tvOS 11 i watchOS 4
  • Problemy z kartami SIMD i tgmath powinny być teraz rozwiązane
  • Dane telemetryczne zostały całkowicie usunięte

3.3 (3 sierpnia 2016 r.)

  • Obsługa programu Xcode 8 Beta 4, iOS 10, macOS 10.12, tvOS 10 i watchOS 3.
  • Zaktualizowano do najnowszej kompilacji wzorca Clang (2016-08-02)
  • Utrwalanie opcji przesyłania danych telemetrycznych z sharpie pod bind do sharpie bind.

3.2 (14 czerwca 2016 r.)

  • Obsługa programu Xcode 8 Beta 1, iOS 10, macOS 10.12, tvOS 10 i watchOS 3.

3.1 (31 maja 2016 r.)

  • Obsługa platformy CocoaPods 1.0
  • Ulepszona niezawodność powiązań CocoaPods przez najpierw utworzenie natywnego .framework , a następnie powiązanie
  • Kopiowanie plików CocoaPods .framework i definicji powiązań do Binding katalogu w celu ułatwienia integracji z projektami powiązań platform Xamarin.iOS i Xamarin.Mac

3.0 (5 października 2015 r.)

  • Obsługa nowych Objective-C funkcji językowych, w tym uproszczonych typów ogólnych i dopuszczalności null, jak wprowadzono w programie Xcode 7
  • Obsługa najnowszych zestawów SDK systemów iOS i Mac.
  • Obsługa kompilowania i analizowania projektu Xcode! Teraz możesz przekazać pełny projekt Xcode do aplikacji Objective Sharpie i zrobi wszystko, co w jego mocy, aby dowiedzieć się, co należy zrobić (np. sharpie bind Project.xcodeproj -sdk ios).
  • Obsługa cocoaPods ! Teraz można skonfigurować, skompilować i powiązać cocoaPods bezpośrednio z aplikacji Objective Sharpie (np. sharpie pod init ios AFNetworking && sharpie pod bind).
  • W przypadku tworzenia powiązań moduły języka Clang zostaną włączone, jeśli platforma je obsługuje, co spowoduje najbardziej poprawne analizowanie struktury, ponieważ struktura struktury jest definiowana przez jej module.modulemapelement .
  • W przypadku projektów Xcode, które tworzą produkt platformowy, przeanalizuj ten produkt zamiast celów produktu pośredniego jako cele niezwiązane ze strukturą w projekcie Xcode może nadal mieć niejednoznaczności, których nie można rozwiązać automatycznie.

2.1.6 (17 marca 2015 r.)

  • Naprawiono powiązanie wyrażenia operatora binarnego: lewa strona wyrażenia została niepoprawnie zamieniona na prawą stronę (np. 1 << 0 była niepoprawnie powiązana jako 0 << 1). Dzięki Adamowi Kempowi za zauważenie tego!
  • Rozwiązano problem z elementem i jest powiązany jako int i zamiast i w systemie i386. -DNS_BUILD_32_LIKE_64 Teraz został przekazany do języka Clang, aby wykonać analizowanie objc/NSObjCRuntime.h zgodnie z NSInteger oczekiwaniami w systemie i386.nuintnintNSUIntegeruint
  • Domyślna architektura zestawów SDK systemu Mac OS X (np. -sdk macosx10.10) jest teraz x86_64 zamiast i386, więc -arch można pominąć, chyba że jest wymagane zastąpienie wartości domyślnej.

2.1.0 (15 marca 2015 r.)

  • sizeof Wyrażenia języka C, których typ argumentu nie jest mapowany na typ pierwotny języka C#, będą obliczane w języku Clang i powiązane jako literał liczby całkowitej, aby uniknąć generowania nieprawidłowego języka C#.
  • Poprawiono Objective-C składnię właściwości, których typem jest blok (Objective-C kod pojawia się w komentarzach powyżej deklaracji powiązanych).
  • Powiązane typy rozpadają się jako ich oryginalny typ (int[] rozkładają się na int* podczas analizy semantycznej w języku Clang, ale wiążą je jako oryginalne zamiast tego zapisane int[] ).

Dzięki bardzo Dave Dunkin za raportowanie wielu usterek naprawionych w tym wydaniu punktu!

2.0.0: 9 marca 2015 r.

Objective Sharpie 2.0 jest główną wersją, która oferuje ulepszony sterownik i analizator oparty na języku Clang oraz nowy aparat powiązań oparty na technologii NRefactory. Te ulepszone składniki zapewniają znacznie lepsze powiązania, szczególnie w przypadku powiązania typu. Wprowadzono wiele innych ulepszeń, które są wewnętrzne dla aplikacji Objective Sharpie, co zapewni wiele funkcji widocznych dla użytkownika w przyszłych wersjach.

Język Objective Sharpie 2.0 jest oparty na języku Clang 3.6.1.

Ulepszenia powiązania typu

  • Objective-C bloki są teraz obsługiwane. Obejmuje to bloki anonimowe/wbudowane i bloki o nazwie za pośrednictwem metody typedef. Bloki anonimowe będą powiązane jako System.Action lub System.Func delegaty, a nazwane bloki będą powiązane jako silnie nazwane delegate typy.

  • Istnieje ulepszona heurystyka nazewnictwa dla anonimowych wyliczenia, które są bezpośrednio poprzedzone rozpoznawaniem typedef wbudowanego typu całkowitego, takiego jak long lub int.

  • Wskaźniki języka C są teraz powiązane jako wskaźniki języka C# unsafe zamiast System.IntPtr. Powoduje to większą przejrzystość powiązania, gdy warto przekształcić parametry wskaźnika w out parametry lub ref . Nie można zawsze wywnioskować, czy parametr powinien mieć wartość out , czy ref, więc wskaźnik jest zachowywany w powiązaniu, aby umożliwić łatwiejsze przeprowadzanie inspekcji.

  • Wyjątkiem od powyższego powiązania wskaźnika jest wystąpienie wskaźnika 2-rangi Objective-C do obiektu jako parametru. W takich przypadkach konwencja jest dominująca, a parametr zostanie powiązany jako out (np. NSError **errorout NSError error).

Weryfikowanie atrybutu

Często okaże się, że powiązania utworzone przez funkcję Objective Sharpie będą teraz oznaczone atrybutem [Verify] . Te atrybuty wskazują, że należy sprawdzić , czy objective Sharpie zrobił prawidłową rzecz, porównując powiązanie z oryginalną deklaracją C/Objective-C (która zostanie podana w komentarzu powyżej deklaracji powiązanej).

Weryfikacja jest zalecana dla wszystkich deklaracji powiązanych, ale najprawdopodobniej jest wymagana w przypadku deklaracji z adnotacjami z atrybutem [Verify] . Wynika to z faktu, że w wielu sytuacjach nie ma wystarczającej ilości metadanych w oryginalnym natywnym kodzie źródłowym, aby wywnioskować, jak najlepiej utworzyć powiązanie. W celu podjęcia najlepszej decyzji dotyczącej powiązania może być konieczne odwołanie się do dokumentacji lub komentarzy kodu w plikach nagłówków.

Aby uzyskać więcej informacji, zobacz dokumentację Weryfikowanie atrybutów .

Inne istotne ulepszenia

  • using instrukcje są teraz generowane na podstawie powiązanych typów. Na przykład, jeśli NSURL element został powiązany, using Foundation; również zostanie wygenerowana instrukcja.

  • struct a union deklaracje będą teraz powiązane, za pomocą sztuczki [FieldOffset] dla związków zawodowych.

  • Wartości wyliczenia z inicjatorami wyrażeń stałych będą teraz prawidłowo powiązane; pełne wyrażenie jest tłumaczone na język C#.

  • Metody i bloki wariadyczne są teraz powiązane.

  • Struktury są teraz obsługiwane za pośrednictwem -framework opcji . Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą powiązań platform natywnych .

  • Objective-C Kod źródłowy zostanie teraz automatycznie wykryty, co powinno wyeliminować konieczność ręcznego przekazania -ObjC kodu lub -xobjective-c do języka Clang.

  • Użycie modułu Clang (@import) jest teraz wykrywane automatycznie, co powinno wyeliminować konieczność ręcznego przekazywania -fmodules do języka Clang dla bibliotek korzystających z obsługi nowego modułu w języku Clang.

  • Interfejs API Ujednolicony platformy Xamarin jest teraz domyślnym elementem docelowym powiązania; -classic użyj opcji , aby wybrać 32-bitowy interfejs API tylko klasyczny.

Istotne poprawki błędów

  • Naprawianie instancetype powiązania w przypadku użycia w Objective-C kategorii
  • W pełni nazwa Objective-C kategorii
  • Protokoły prefiksów Objective-C z I (np. INSCopying zamiast NSCopying)

1.1.35: 21 grudnia 2014 r.

Drobne poprawki błędów.

1.1.1: 15 grudnia 2014 r.

1.1.1 była pierwszą główną wersją po 1,5 roku użytku wewnętrznego i programowania na platformie Xamarin po wstępnej wersji zapoznawczej aplikacji Objective Sharpie w kwietniu 2013 roku. Ta wersja jest pierwszą wersją, która jest ogólnie uważana za stabilną i używaną dla szerokiej gamy bibliotek natywnych, z nowym zapleczem Clang.