Xamarin.iOS bağlama projesi geçişi
Xamarin.iOS bağlama kitaplığını iOS için .NET bağlama kitaplığına geçirmek için:
Visual Studio'da Xamarin.iOS bağlama projenizle aynı ada sahip yeni bir iOS Bağlama Kitaplığı projesi oluşturun:
.NET SDK stilinde bir projeniz olduğunu onaylamak için proje dosyasını açın:
<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>
Not
iOS bağlama kitaplığının proje dosyası, iOS sınıf kitaplığının proje dosyasına benzer.
Yerel kitaplığınızı veya yerel çerçevenizi projeye yerel başvuru olarak ekleyin. Ardından bağlama proje dosyasını Xamarin.iOS bağlama projenizdeki öğeyle
<NativeReference>
güncelleştirin:<ItemGroup> <NativeReference Include="libXMBindingLibraryUniversal.a"> <Kind>Static</Kind> <ForceLoad>True</ForceLoad> </NativeReference> </ItemGroup>
Xamarin.iOS bağlama projenizdeki API tanımını iOS için .NET bağlama projenize kopyalayın.
Xamarin.iOS bağlama projenizdeki ek gerekli kodları iOS için .NET bağlama projenize kopyalayın.
iOS için .NET bağlama projenizde desteklenmeyen API'leri iOS için .NET eşdeğerleriyle değiştirin. Daha fazla bilgi için bkz . Desteklenmeyen API'ler.
Desteklenmeyen API'ler
Aşağıdaki Xamarin.iOS API'leri değişti.
System.nint ve System.nunit
System.nint
ve System.nuint
türleri iOS için .NET'te kullanılamaz. Bunun yerine, sırasıyla ve ile eşlenen System.IntPtr
ve nuint
System.UIntPtr
türleriyle nint
değiştirilirler. ve System.nuint
türlerini kullanan System.nint
kod derlenmez ve ve nuint
türleriyle nint
değiştirilmelidir. Buna ek olarak, ve nint
üzerinde System.IntPtr
aşırı yükleyen ve System.UIntPtr
nuint
derlenmez. Bu senaryoda, aşırı yüklemelerden birini yeniden adlandırın veya kaldırın.
System.nfloat
Bu System.nfloat
tür iOS için .NET'te kullanılamaz. Bunun yerine türüyle System.Runtime.InteropServices.NFloat
değiştirilir. Kullanmak veya tam tür adını kullanmak nfloat
için System.nfloat
başvuruda bulunan tüm kodları değiştirin.
NSObject.Handle tür değişikliği
iOS NSObject.Handle
için .NET'te ve INativeObject.Handle
özellikleri türü System.IntPtr
bir ObjCRuntime.NativeHandle
yapı olarak değiştirildi. Bu, birçok parametrenin ve dönüş değerinin türünü değiştirmesi gerektiği anlamına gelir. Örneğin:
- türünde veya
Handle
özelliklerineIntPtr
sahipClassHandle
olan nesnelerdenFoundation.NSObject
devralan tüm nesneler, özellik türlerini olarakObjCRuntime.NativeHandle
değiştirmelidir. - veya öğesinden
Foundation.NSObject
devralınan veObjCRuntime.DisposableObject
daha önce birSystem.IntPtr
veyaSystem.IntPtr
bir vebool
almış oluşturucuları olan tüm nesneler başvuruları olarakObjcRuntime.NativeHandle
değiştirmelidirIntPtr
.
ile ObjCRuntime.NativeHandler
arasında System.IntPtr
örtük dönüştürmeler vardır, bu nedenle bu tür değişikliği yaptıktan sonra çoğu kod daha fazla değişiklik yapmadan derlenmelidir.
Model.AutoGeneratedName
Model.AutoGeneratedName
özelliği iOS için .NET'te kullanılamaz. Xamarin.iOS'ta bu özellik model için Objective-C tür adının otomatik olarak oluşturulup oluşturulmayacağını belirtti. iOS için .NET'te, modelden Objective-C tür adını otomatik hale getirme varsayılan ve yalnızca kullanılabilir davranıştır.