Objective Sharpie – historie verzí
3.4 (11. října 2017)
- 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
dosharpie 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
doBinding
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á jako0 << 1
). Díky Adam Kemp za noticing to! - Opravili jsme problém s
NSInteger
tím, že byl svázaný jakoint
uint
s i386 aNSUInteger
nenint
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á seint*
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 jakoSystem.Action
neboSystem.Func
delegáty, zatímco pojmenované bloky budou vázány jako typy se silným názvemdelegate
.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říkladlong
neboint
.Ukazatele jazyka C jsou nyní vázány jako ukazatele jazyka C#
unsafe
místoSystem.IntPtr
. To má za následek srozumitelnější vazbu, kdy můžete chtít změnit parametry ukazatele naout
parametry neboref
parametry. Není možné vždy odvodit, zda má býtout
parametr neboref
, 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 **error
→out 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. PokudNSURL
byl například vázán,using Foundation;
vygeneruje se také příkaz.struct
aunion
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ístoNSCopying
)
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.