Partilhar via


Plataforma Apple (iOS e Mac)

Compartilhamento de código

Para elementos do seu código que não têm elementos de interface do usuário, a melhor maneira de compartilhar código entre iOS e Mac ainda é o uso de Bibliotecas de Classes Portáteis.

Para o código que precisa fazer algum trabalho de interface do usuário e, ainda assim, você deseja compartilhar, você deve usar Projetos Compartilhados que permitem que você coloque código para compartilhar em um único projeto e compilá-lo com Mac e iOS quando referenciado.

API Unificada

A API Unificada para projetos iOS e Mac usa os mesmos namespaces para estruturas para que o mesmo arquivo de código possa ser usado em ambas as plataformas, para compartilhamento contínuo de código. Ele também habilita builds de 32 e 64 bits. A API Unificada tem sido o padrão de modelo desde o início de 2015 e é recomendada para todos os novos projetos – somente projetos de API Unificada podem ser enviados para o App Store.

APIs clássicas

Observação

Substituição de perfil clássico: À medida que novas plataformas são adicionadas no Xamarin.iOS, estamos começando a preterir gradualmente os recursos do perfil clássico (monotouch.dll). Por exemplo, a opção não NRC (new-ref-count) foi removida. O NRC sempre foi habilitado para todos os aplicativos unificados (ou seja, não NRC nunca foi uma opção) e não tem problemas conhecidos. Versões futuras removerão a opção de usar Boehm como coletor de lixo. Essa também era uma opção nunca disponível para aplicativos unificados. A remoção completa do suporte clássico está agendada para o outono de 2016 com o lançamento do Xamarin.iOS 10.0.

As APIs originais (não Unificadas) do Xamarin.iOS e do Xamarin.Mac dificultaram o compartilhamento de código porque as estruturas nativas tinham MonoTouch. prefixos de namespace ou MonoMac. . Fornecemos alguns namespaces vazios que permitem que os desenvolvedores compartilhem código adicionando using instruções que referenciam namespaces MonoMac e MonoTouch no mesmo arquivo, mas isso foi um pouco feio. A API Clássica só deve continuar a ser usada em aplicativos herdados que são distribuídos internamente (é recomendável atualizar para a API Unificada).

Atualizando do Clássico para a API Unificada

Há instruções detalhadas para atualizar qualquer aplicativo do Clássico para a API Unificada.

Bibliotecas de associação Objective-C

O Xamarin permite que você traga bibliotecas nativas para seus aplicativos com associações. Esta seção explica:

  • como as associações funcionam,
  • como criar manualmente um projeto de associação que permite trazer Objective-C código para o Xamarin e
  • como usar nossa ferramenta Objective Sharpie para ajudar a automatizar o processo.

Referências nativas

Tipos nativos do Mac/iOS

Para dar suporte a código de 32 e 64 bits de forma transparente de C# e F#, estamos introduzindo novos tipos de dados. Saiba mais sobre eles aqui.

Criando aplicativos de 32 e 64 bits

O que você precisa saber para dar suporte a aplicativos de 32 e 64 bits.

Trabalhando com tipos nativos em aplicativos multiplataforma

Este artigo aborda o uso dos novos tipos nativos de API Unificada do iOS (nint, nuint, nfloat) em um aplicativo multiplataforma em que o código é compartilhado com dispositivos não iOS, como Android ou Windows Phone OSes. Ele fornece insights sobre quando os tipos nativos devem ser usados e fornece várias soluções possíveis para casos em que o novo tipo deve ser usado com código multiplataforma.

Pilha de HttpClient e seletor de implementação SSL/TLS

O novo Seletor de Pilha HttpClient controla qual implementação do HttpClient usar em seu aplicativo Xamarin.iOS, Xamarin.tvOS e Xamarin.Mac. Agora você pode alternar para uma implementação que usa os transportes nativos do iOS, tvOS ou OS X (NSUrlSession ou CFNetwork dependendo do sistema operacional).

O SSL (Secure Socket Layer) e seu sucessor, TLS (Transport Layer Security), fornecem suporte para HTTP e outras conexões de rede por meio de System.Net.Security.SslStream. A nova opção de build de implementação SSL/TLS alterna entre a própria pilha TLS do Mono e uma da pilha TLS da Apple presente no Mac e no iOS.