Apple Platform (iOS и Mac)
Общий доступ к коду
Для элементов кода, не имеющих элементов пользовательского интерфейса, лучший способ совместного использования кода между iOS и Mac по-прежнему использует переносимые библиотеки классов.
Для кода, который должен работать с пользовательским интерфейсом, и все же вы хотите предоставить общий доступ, следует использовать общие проекты , которые позволяют размещать код для совместного использования в одном проекте и компилировать его как с Mac, так и с iOS при ссылке.
Unified API
Единый API для проектов iOS и Mac использует одинаковые пространства имен для платформ, чтобы один и тот же файл кода можно использовать на обеих платформах для простого совместного использования кода. Он также включает как 32, так и 64-разрядные сборки. Единый API является шаблоном по умолчанию с начала 2015 года и рекомендуется для всех новых проектов. В App Store можно отправить только проекты единого API.
Классические API
Примечание.
Классическая отмена профиля. Так как новые платформы добавляются в Xamarin.iOS, мы начинаем постепенно отклонять функции из классического профиля (monotouch.dll). Например, параметр без NRC (new-ref-count) был удален. NRC всегда был включен для всех унифицированных приложений (т. е. не NRC никогда не был вариантом) и не имеет известных проблем. Будущие выпуски удалят возможность использования Boehm в качестве сборщика мусора. Этот вариант также недоступен для унифицированных приложений. Полное удаление классической поддержки запланировано на осень 2016 г. с выпуском Xamarin.iOS 10.0.
Исходные (не унифицированные) API Xamarin.iOS и Xamarin.Mac усложнили совместное использование кода, так как собственные платформы имели MonoTouch.
префиксы пространства имен или MonoMac.
пространств имен. Мы предоставили некоторые пустые пространства имен, которые позволяют разработчикам совместно использовать код, добавляя using
инструкции, ссылающиеся на пространства имен MonoMac и MonoTouch в одном файле, но это было немного уродливым. Классический API должен продолжать использоваться только в устаревших приложениях, которые распределены внутренне (рекомендуется обновить до унифицированного API).
Обновление с классической версии до единого API
Подробные инструкции по обновлению любого приложения из классического интерфейса в единый API.
Библиотеки привязки Objective-C
Xamarin позволяет перенести собственные библиотеки в приложения с привязками. В этом разделе объясняется, как выполнить такие задачи:
- как работают привязки,
- как вручную создать проект привязки, позволяющий перенести Objective-C код в Xamarin и
- как использовать наше средство Objective Sharpie для автоматизации процесса.
Собственные ссылки
Собственные типы Mac/iOS
Чтобы поддерживать 32-разрядный и 64-разрядный код прозрачно из C# и F#, мы представляем новые типы данных. Подробнее здесь.
Создание 32 и 64-разрядных приложений
Что необходимо знать, чтобы поддерживать 32 и 64-разрядные приложения.
Работа с собственными типами в кроссплатформенных приложениях
В этой статье рассматриваются новые типы собственных API iOS (nint
, nuint
, ) nfloat
в кроссплатформенное приложение, в котором код предоставляется совместно с устройствами, не использующими iOS, такими как Android или Windows Телефон OSes.
Он предоставляет аналитические сведения о том, когда следует использовать собственные типы и предоставляет несколько возможных решений в тех случаях, когда новый тип должен использоваться с кроссплатформенным кодом.
HttpClient Stack и селектор реализации SSL и TLS
Новый селектор стека HttpClient управляет реализацией HttpClient, используемой в приложении Xamarin.iOS, Xamarin.tvOS и Xamarin.Mac. Теперь можно переключиться на реализацию, которая использует собственные транспорты iOS, tvOS или OS X (NSUrlSession
или CFNetwork
в зависимости от ОС).
SSL (безопасный слой сокетов) и его преемник TLS (транспортная безопасность) обеспечивают поддержку HTTP и других сетевых подключений через System.Net.Security.SslStream
. Новый параметр сборки SSL/TLS переключается между собственным стеком TLS Mono и одним из них, на основе стека TLS Apple, присутствующих в Mac и iOS.