Share via


Xamarin.iOS 바인딩 프로젝트 마이그레이션

Xamarin.iOS 바인딩 라이브러리를 iOS용 .NET 바인딩 라이브러리로 마이그레이션하려면 다음을 수행합니다.

  1. Visual Studio에서 Xamarin.iOS 바인딩 프로젝트와 동일한 이름으로 새 iOS 바인딩 라이브러리 프로젝트를 만듭니다.

    Visual Studio에서 iOS 바인딩 라이브러리 프로젝트를 만드는 스크린샷

    프로젝트 파일을 열어 .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>
    

    참고 항목

    iOS 바인딩 라이브러리의 프로젝트 파일은 iOS 클래스 라이브러리의 프로젝트 파일과 비슷합니다.

  2. 네이티브 라이브러리 또는 네이티브 프레임워크를 네이티브 참조로 프로젝트에 추가합니다. 그런 다음, 바인딩 프로젝트 파일을 Xamarin.iOS 바인딩 프로젝트의 항목으로 <NativeReference> 업데이트합니다.

    <ItemGroup>
        <NativeReference Include="libXMBindingLibraryUniversal.a">
            <Kind>Static</Kind>
            <ForceLoad>True</ForceLoad>
        </NativeReference>
    </ItemGroup>
    
  3. Xamarin.iOS 바인딩 프로젝트에서 iOS용 .NET 바인딩 프로젝트로 API 정의를 복사합니다.

  4. Xamarin.iOS 바인딩 프로젝트에서 필요한 추가 코드를 iOS 바인딩 프로젝트용 .NET에 복사합니다.

  5. iOS용 .NET 바인딩 프로젝트에서 지원되지 않는 모든 API를 iOS용 .NET으로 대체합니다. 자세한 내용은 지원되지 않는 API를 참조 하세요.

지원되지 않는 API

다음 Xamarin.iOS API가 변경되었습니다.

System.nint 및 System.nunit

System.nint iOS용 .NET에서는 형식을 System.nuint 사용할 수 없습니다. 대신 각각 매핑되는 형식 및 nuint 형식으로 System.UIntPtrnintSystem.IntPtr 대체됩니다. 및 형식을 System.nint 사용하는 코드는 컴파일되지 않으며 형식과 nuint 형식으로 nint 바꿔야 System.nuint 합니다. 또한 오버로드 System.IntPtr 되고 nintSystem.UIntPtrnuint 컴파일되지 않는 코드도 있습니다. 이 시나리오에서는 오버로드 중 하나의 이름을 바꾸거나 제거합니다.

System.nfloat

System.nfloat iOS용 .NET에서는 이 형식을 사용할 수 없습니다. 대신 형식으로 대체됩니다 System.Runtime.InteropServices.NFloat . 사용할 nfloat 코드나 정규화된 형식 이름을 수정합니다System.nfloat.

NSObject.Handle 형식 변경

iOS NSObject.Handle 용 .NET에서 속성 형식 INativeObject.Handle 이 구조체로 ObjCRuntime.NativeHandle 변경되었습니다System.IntPtr. 즉, 많은 매개 변수와 반환 값이 형식을 변경해야 합니다. 예시:

  • 해당 개체 또는 Handle 형식의 속성에서 Foundation.NSObject 상속되는 ClassHandle 모든 개체는 해당 속성 형식을 .로 ObjCRuntime.NativeHandle변경해야 IntPtr 합니다.
  • 이전에 또는 a System.IntPtrboola를 가져온 System.IntPtr생성자에서 Foundation.NSObject 상속되거나 ObjCRuntime.DisposableObject 생성자가 있는 모든 개체는 참조를 IntPtrObjcRuntime.NativeHandle변경해야 합니다.

간 암시적 변환이 있으므로 이 형식을 System.IntPtrObjCRuntime.NativeHandler변경한 후 대부분의 코드는 추가 변경 없이 컴파일해야 합니다.

Model.AutoGeneratedName

iOS용 .NET에서는 이 Model.AutoGeneratedName 속성을 사용할 수 없습니다. Xamarin.iOS에서 이 속성은 모델의 Objective-C 형식 이름을 자동으로 생성할지 여부를 지정했습니다. iOS용 .NET에서 모델에서 Objective-C 형식 이름을 자동으로 생성하는 것은 사용할 수 있는 기본 및 유일한 동작입니다.