Sdílet prostřednictvím


Objective Sharpie – historie verzí

3.4 (11. října 2017)

Stáhnout v3.4.0

  • Podpora pro Xcode 9: iOS 11, macOS 10.13, tvOS 11 a watchOS 4
  • Problémy se SIMD a tgmathem by teď měly být opravené.
  • Telemetrie byla zcela odebrána.

3.3 (3. srpna 2016)

  • Podpora pro Xcode 8 Beta 4, iOS 10, macOS 10.12, tvOS 10 a watchOS 3.
  • Aktualizováno na nejnovější hlavní build Clang (2016-08-02)
  • Zachovat možnosti odesílání telemetrie z sharpie pod bind do sharpie bind.

3.2 (14. června 2016)

  • Podpora pro Xcode 8 Beta 1, iOS 10, macOS 10.12, tvOS 10 a watchOS 3.

3.1 (31. května 2016)

  • Podpora pro CocoaPods 1.0
  • Vylepšili jsme spolehlivost vazeb CocoaPods tím, že nejprve sestavíte nativní .framework a potom vazbu, která
  • Zkopírujte CocoaPods a definici vazby .framework do Binding adresáře, abyste usnadnili integraci s projekty vazeb Xamarin.iOS a Xamarin.Mac.

3.0 (5. října 2015)

  • Podpora nových Objective-C jazykových funkcí, včetně odlehčených obecných typů a nullability, jak je uvedeno v Xcode 7
  • Podpora nejnovějších sad SDK pro iOS a Mac
  • Podpora vytváření a analýzy projektů Xcode! Nyní můžete předat kompletní projekt Xcode Objective Sharpie a udělá to nejlepší, když zjistíte, co je správné udělat (např. sharpie bind Project.xcodeproj -sdk ios).
  • Podpora CocoaPods ! Nyní můžete konfigurovat, sestavovat a svázat CocoaPods přímo z Objective Sharpie (např. sharpie pod init ios AFNetworking && sharpie pod bind).
  • Při vytváření vazeb rozhraní budou moduly Clang povoleny, pokud je architektura podporuje, což vede k nejspravnějšímu parsování architektury, protože struktura architektury je definována jeho module.modulemap.
  • U projektů Xcode, které vytvářejí produkt architektury, parsujte tento produkt místo zprostředkujících cílů produktu jako ne frameworkové cíle v projektu Xcode stále nejednoznačnosti, které nelze automaticky přeložit.

2.1.6 (17. března 2015)

  • Oprava vazby výrazu binárního operátoru: levá strana výrazu byla nesprávně prohozena pravou rukou (např. 1 << 0 nesprávně svázaná jako 0 << 1). Díky Adam Kemp za noticing to!
  • Opravili jsme problém s NSInteger tím, že byl svázaný jako intuint s i386 a NSUInteger ne nint jako i386nuint. -DNS_BUILD_32_LIKE_64 Tento problém se teď předává jazyku Clang, aby parsování objc/NSObjCRuntime.h fungovalo podle očekávání v i386.
  • Výchozí architektura sad MAC OS X SDK (např. -sdk macosx10.10) je teď x86_64 místo i386, takže -arch ji můžete vynechat, pokud výchozí nastavení nepřepíšete.

2.1.0 (15. března 2015)

  • sizeof Výrazy jazyka C, jejichž typ argumentu není mapován na primitivní typ jazyka C#, budou vyhodnoceny v jazyce Clang a vázány jako celočíselné literály, aby se zabránilo generování neplatného jazyka C#.
  • Oprava Objective-C syntaxe pro vlastnosti, jejichž typ je blok (Objective-C kód se zobrazí v komentářích nad vázanými deklaracemi).
  • Svázat rozpadlé typy jako jejich původní typ (int[] rozpadá se int* během sémantické analýzy v jazyce Clang, ale svázat jej jako původní jako napsaný int[] místo toho).

Díky moc Dave Dunkinovi za hlášení mnoha chyb opravených v této bodové verzi!

2.0.0: 9. března 2015

Objective Sharpie 2.0 je hlavní verze, která obsahuje vylepšený ovladač založený na jazyce Clang a analyzátor a nový vazební modul založený na NRefactory. Tyto vylepšené komponenty poskytují mnohem lepší vazby, zejména kolem vazby typu. Bylo provedeno mnoho dalších vylepšení, která jsou interní pro Objective Sharpie, která v budoucích verzích přináší mnoho funkcí viditelných uživatelem.

Objective Sharpie 2.0 je založen na Clang 3.6.1.

Vylepšení vazby typu

  • Objective-C bloky jsou nyní podporovány. To zahrnuje anonymní/vložené bloky a bloky pojmenované prostřednictvím typedef. Anonymní bloky budou vázány jako System.Action nebo System.Func delegáty, zatímco pojmenované bloky budou vázány jako typy se silným názvem delegate .

  • Existuje vylepšená heuristika pojmenování pro anonymní výčty, které jsou bezprostředně před typedef překladem na předdefinovaný celočíselný typ, například long nebo int.

  • Ukazatele jazyka C jsou nyní vázány jako ukazatele jazyka C# unsafe místo System.IntPtr. To má za následek srozumitelnější vazbu, kdy můžete chtít změnit parametry ukazatele na out parametry nebo ref parametry. Není možné vždy odvodit, zda má být out parametr nebo ref, takže ukazatel je zachován ve vazbě, aby bylo možné snadnější auditování.

  • Výjimkou výše uvedené vazby ukazatele je, když je jako parametr zjištěn ukazatel 2-pořadí objektu Objective-C . V těchto případech je konvence převládající a parametr bude vázán jako out (např. NSError **errorout NSError error).

Ověření atributu

Často zjistíte, že vazby vytvořené Objective Sharpie budou nyní anotovány atributem [Verify] . Tyto atributy naznačují, že byste měli ověřit , že Objective Sharpie udělal správnou věc porovnáním vazby s původní C/Objective-C deklaraci (která bude poskytnuta v komentáři nad vázanou deklaraci).

U všech vázaných deklarací se doporučuje ověření, ale s největší pravděpodobností se vyžaduje pro deklarace anotované atributem [Verify] . Důvodem je to, že v mnoha situacích není v původním nativním zdrojovém kódu dostatek metadat, aby bylo možné odvodit, jak nejlépe vytvořit vazbu. Možná budete muset odkazovat na dokumentaci nebo komentáře ke kódu v souborech hlaviček, aby bylo nejlepší závazné rozhodnutí.

Další podrobnosti najdete v dokumentaci k ověření atributů .

Další čitelná vylepšení

  • using příkazy se teď generují na základě vázaného typu. Pokud NSURL byl například vázán, using Foundation; vygeneruje se také příkaz.

  • struct a union deklarace budou nyní vázány pomocí triku [FieldOffset] pro sjednocení.

  • Hodnoty výčtu s inicializátory konstantních výrazů budou nyní správně svázány; celý výraz se přeloží do jazyka C#.

  • Variadické metody a bloky jsou nyní vázány.

  • Rozhraní jsou nyní podporována prostřednictvím -framework této možnosti. Další podrobnosti najdete v dokumentaci k rozhraním Binding Native Framework .

  • Objective-C zdrojový kód se teď automaticky rozpozná, což by mělo eliminovat potřebu předat -ObjC nebo -xobjective-c ručně do jazyka Clang.

  • Využití modulu Clang (@import) je nyní automaticky zjištěno, což by mělo eliminovat nutnost předat -fmodules Clang ručně pro knihovny, které používají podporu nového modulu v jazyce Clang.

  • Sjednocené rozhraní API Xamarinu je teď výchozím cílem vazby; -classic použijte možnost cílit na 32bitové pouze klasické rozhraní API.

Opravy chyb, které se dají pochytovat

  • Oprava instancetype vazby při použití v Objective-C kategorii
  • Kategorie s úplným názvem Objective-C
  • Předpony Objective-C protokolů s I (např. INSCopying místo NSCopying)

1.1.35: 21. prosince 2014

Menší opravy chyb.

1.1.1: 15. prosince 2014

1.1.1 byla první hlavní verze po 1,5 letech interního použití a vývoje v Xamarinu po počáteční verzi Preview Objective Sharpie v dubnu 2013. Tato verze je první, která má být obecně považována za stabilní a použitelnou pro širokou škálu nativních knihoven s novým back-endem jazyka Clang.