Apple 플랫폼(iOS 및 Mac)
코드 공유
사용자 인터페이스 요소가 없는 코드 요소의 경우 iOS와 Mac 간에 코드를 공유하는 가장 좋은 방법은 이식 가능한 클래스 라이브러리를 사용하는 것입니다.
일부 사용자 인터페이스 작업을 수행해야 하지만 공유하려는 코드의 경우 단일 프로젝트에서 공유할 코드를 배치하고 참조할 때 Mac 및 iOS로 컴파일할 수 있는 공유 프로젝트를 사용해야 합니다.
Unified API
iOS 및 Mac용 통합 API 프로젝트는 프레임워크에 동일한 네임스페이스를 사용하므로 원활한 코드 공유를 위해 두 플랫폼에서 동일한 코드 파일을 사용할 수 있습니다. 또한 32비트 및 64비트 빌드를 모두 사용할 수 있습니다. Unified API는 2015년 초부터 템플릿 기본값이었으며 모든 새 프로젝트에 권장됩니다. 통합 API 프로젝트만 App Store에 제출할 수 있습니다.
클래식 API
참고 항목
클래식 프로필 사용 중단: Xamarin.iOS에 새 플랫폼이 추가됨에 따라 클래식 프로필(monotouch.dll)의 기능이 점차 중단되기 시작했습니다. 예를 들어 NRC가 아닌(new-ref-count) 옵션이 제거되었습니다. NRC는 항상 모든 통합 애플리케이션에 대해 사용하도록 설정되었으며(즉, NRC가 아닌 애플리케이션은 옵션이 아니었습니다). 알려진 문제가 없습니다. 이후 릴리스에서는 Boehm을 가비지 수집기로 사용하는 옵션이 제거됩니다. 통합 애플리케이션에서 사용할 수 없는 옵션이기도 합니다. 클래식 지원의 전체 제거는 Xamarin.iOS 10.0 릴리스와 함께 2016년 가을로 예정되어 있습니다.
원래(통합되지 않은) Xamarin.iOS 및 Xamarin.Mac API는 네이티브 프레임워크에 네임스페이스 접두사 또는 MonoTouch.
MonoMac.
네임스페이스 접두사를 포함하기 때문에 코드 공유를 더 어렵게 만들었습니다. 개발자가 동일한 파일에 MonoMac 및 MonoTouch 네임스페이스를 모두 참조하는 문을 추가하여 using
코드를 공유할 수 있는 빈 네임스페이스를 제공했지만 약간 못생겼습니다. 클래식 API는 내부적으로 배포되는 레거시 앱에서만 계속 사용해야 합니다(통합 API로 업그레이드하는 것이 좋습니다).
클래식에서 통합 API로 업데이트
클래식에서 통합 API로 애플리케이션을 업데이트하기 위한 자세한 지침이 있습니다.
바인딩 Objective-C 라이브러리
Xamarin을 사용하면 바인딩을 사용하여 네이티브 라이브러리를 앱으로 가져올 수 있습니다. 이 섹션에서는 다음을 설명합니다.
- 바인딩 작동 방식
- Xamarin으로 코드를 가져올 Objective-C 수 있는 바인딩 프로젝트를 수동으로 빌드하는 방법 및
- Objective Sharpie 도구를 사용하여 프로세스를 자동화하는 방법을 알아보세요.
네이티브 참조
Mac/iOS 네이티브 형식
C# 및 F#에서 투명하게 32비트 및 64비트 코드를 지원하기 위해 새로운 데이터 형식이 도입되었습니다. 여기에서 알아보세요.
32비트 및 64비트 앱 빌드
32비트 및 64비트 애플리케이션을 지원하기 위해 알아야 할 사항입니다.
플랫폼 간 앱에서의 네이티브 형식 작업
이 문서에서는 Android 또는 Windows 전화 OS와 같은 비 iOS 디바이스와 코드를 공유하는 플랫폼 간 애플리케이션에서 새로운 iOS 통합 API 네이티브 형식(nint
nuint
, , nfloat
)을 사용하는 방법에 대해 설명합니다.
네이티브 형식을 사용해야 하는 시기에 대한 인사이트를 제공하고 플랫폼 간 코드와 함께 새 형식을 사용해야 하는 경우 몇 가지 가능한 솔루션을 제공합니다.
HttpClient 스택 및 SSL/TLS 구현 선택기
새 HttpClient Stack Selector는 Xamarin.iOS, Xamarin.tvOS 및 Xamarin.Mac 앱에서 사용할 HttpClient 구현을 제어합니다. 이제 iOS, tvOS 또는 OS X의 네이티브 전송(NSUrlSession
또는 CFNetwork
OS에 따라 다름)을 사용하는 구현으로 전환할 수 있습니다.
SSL(Secure Socket Layer)과 후속 TLS(전송 계층 보안)는 HTTP 및 기타 네트워크 연결을 통해 System.Net.Security.SslStream
지원합니다. 새로운 SSL/TLS 구현 빌드 옵션은 Mono의 자체 TLS 스택과 Mac 및 iOS에 있는 Apple의 TLS 스택으로 구동되는 스택 간에 전환됩니다.