Migrace projektu vazby Xamarin.iOS
Migrace knihovny vazeb Xamarin.iOS do knihovny vazeb .NET pro iOS:
V sadě Visual Studio vytvořte nový projekt knihovny vazeb pro iOS se stejným názvem jako projekt vazby Xamarin.iOS:
Otevřete soubor projektu a potvrďte, že máte projekt ve stylu sady .NET SDK:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0-ios</TargetFramework> <Nullable>enable</Nullable> <ImplicitUsings>true</ImplicitUsings> <IsBindingProject>true</IsBindingProject> </PropertyGroup> <ItemGroup> <ObjcBindingApiDefinition Include="ApiDefinition.cs" /> <ObjcBindingCoreSource Include="StructsAndEnums.cs" /> </ItemGroup> </Project>
Poznámka:
Soubor projektu pro knihovnu vazeb pro iOS je podobný souboru projektu pro knihovnu tříd iOS.
Přidejte do projektu nativní knihovnu nebo nativní architekturu jako nativní odkaz. Potom aktualizujte soubor vazby projektu položkou
<NativeReference>
z projektu vazby Xamarin.iOS:<ItemGroup> <NativeReference Include="libXMBindingLibraryUniversal.a"> <Kind>Static</Kind> <ForceLoad>True</ForceLoad> </NativeReference> </ItemGroup>
Zkopírujte definici rozhraní API z projektu vazby Xamarin.iOS do projektu vazby .NET pro iOS.
Zkopírujte veškerý další požadovaný kód z projektu vazby Xamarin.iOS do projektu vazby .NET pro iOS.
V projektu vazby .NET pro iOS nahraďte všechna nepodporovaná rozhraní API jejich ekvivalenty .NET pro iOS. Další informace najdete v tématu Nepodporovaná rozhraní API.
Nepodporovaná rozhraní API
Změnila se následující rozhraní API Xamarin.iOS.
System.nint a System.nunit
Typy System.nint
a System.nuint
typy nejsou k dispozici v .NET pro iOS. Místo toho se nahradí typy nint
a nuint
typy, které se mapují na System.IntPtr
a System.UIntPtr
v uvedeném pořadí. Kód, který používá typy a System.nuint
které se nebudou System.nint
kompilovat a měly by být nahrazeny typynint
.nuint
Kromě toho kód, který přetíží System.IntPtr
a nint
a nebude System.UIntPtr
nuint
kompilován. V tomto scénáři přejmenujte nebo odeberte některé z přetížení.
System.nfloat
Typ System.nfloat
není k dispozici v .NET pro iOS. Místo toho se nahradí typem System.Runtime.InteropServices.NFloat
. Upravte libovolný kód, který odkazuje na System.nfloat
použití nfloat
nebo plně kvalifikovaný název typu.
Změna typu NSObject.Handle
V .NET pro iOS NSObject.Handle
se typ a INativeObject.Handle
vlastnosti změnily z System.IntPtr
na ObjCRuntime.NativeHandle
strukturu. To znamená, že mnoho parametrů a návratových hodnot bude muset změnit typ. Příklad:
- Všechny objekty, které dědí z
Foundation.NSObject
toho, které majíClassHandle
neboHandle
vlastnosti typuIntPtr
, by měly změnit jejich typ vlastnosti naObjCRuntime.NativeHandle
. - Všechny objekty, které dědí z
Foundation.NSObject
neboObjCRuntime.DisposableObject
mají konstruktory, které dříve vzalySystem.IntPtr
, neboSystem.IntPtr
a a ,bool
by měly změnitIntPtr
odkazy naObjcRuntime.NativeHandle
.
Existují implicitní převody mezi System.IntPtr
a ObjCRuntime.NativeHandler
, takže po provedení této změny typu by se většina kódu měla zkompilovat bez dalších změn.
Model.AutoGeneratedName
Vlastnost Model.AutoGeneratedName
není k dispozici v .NET pro iOS. V Xamarin.iOS byla tato vlastnost zadána, zda se má automaticky vygenerovat název typu Objective-C pro model. V .NET pro iOS je automatické generování názvu typu Objective-C z modelu výchozí a jediné dostupné chování.