Condividi tramite


Piattaforma Apple (iOS e Mac)

Condivisione del codice

Per gli elementi del codice che non hanno elementi dell'interfaccia utente il modo migliore per condividere il codice tra iOS e Mac è ancora l'uso di librerie di classi portabili.

Per il codice che deve eseguire alcune operazioni dell'interfaccia utente e, tuttavia, si vuole condividere, è consigliabile usare Progetti condivisi che consentono di inserire il codice da condividere in un singolo progetto e di compilarlo con Mac e iOS quando si fa riferimento.

API unificata

L'API unificata per i progetti iOS e Mac usa gli stessi spazi dei nomi per i framework in modo che lo stesso file di codice possa essere usato in entrambe le piattaforme, per la condivisione di codice senza problemi. Abilita anche build a 32 e a 64 bit. L'API unificata è stata l'impostazione predefinita del modello fin dall'inizio del 2015 ed è consigliata per tutti i nuovi progetti. Solo i progetti API unificati possono essere inviati all'App Store.

API classiche

Nota

Deprecazione del profilo classico: man mano che vengono aggiunte nuove piattaforme in Xamarin.iOS, si stanno iniziando a deprecare gradualmente le funzionalità dal profilo classico (monotouch.dll). Ad esempio, l'opzione non NRC (new-ref-count) è stata rimossa. NRC è sempre stato abilitato per tutte le applicazioni unificate (ad esempio non NRC non è mai stata un'opzione) e non presenta problemi noti. Le versioni future rimuoveranno l'opzione di usare Boehm come Garbage Collector. Questa è stata anche un'opzione che non è mai disponibile per le applicazioni unificate. La rimozione completa del supporto classico è pianificata per l'autunno 2016 con il rilascio di Xamarin.iOS 10.0.

Le API Xamarin.iOS e Xamarin.Mac originali (non unificate) rendevano più difficile la condivisione del codice perché i framework nativi avevano MonoTouch. prefissi dello spazio dei nomi o MonoMac. . Sono stati forniti alcuni spazi dei nomi vuoti che consentono agli sviluppatori di condividere il codice aggiungendo using istruzioni che fanno riferimento a spazi dei nomi MonoMac e MonoTouch nello stesso file, ma questo è stato un po ' brutto. L'API classica deve continuare a essere usata solo nelle app legacy distribuite internamente (è consigliabile eseguire l'aggiornamento all'API unificata).

Aggiornamento dalla versione classica all'API unificata

Sono disponibili istruzioni dettagliate per l'aggiornamento di qualsiasi applicazione dal modello classico all'API unificata.

Librerie di binding Objective-C

Xamarin consente di inserire librerie native nelle app con associazioni. Questa sezione illustra:

  • come funzionano le associazioni,
  • come compilare manualmente un progetto di associazione che consente di inserire Objective-C codice in Xamarin e
  • come usare lo strumento Objective Sharpie per automatizzare il processo.

Riferimenti nativi

Tipi nativi Mac/iOS

Per supportare il codice a 32 e 64 bit in modo trasparente da C# e F#, vengono introdotti nuovi tipi di dati. Altre informazioni in proposito sono disponibili qui.

Compilazione di app a 32 e 64 bit

Informazioni necessarie per supportare applicazioni a 32 e a 64 bit.

Utilizzo di tipi nativi nelle app multipiattaforma

Questo articolo illustra l'uso dei nuovi tipi nativi dell'API unificata iOS (nint, nuint, nfloat) in un'applicazione multipiattaforma in cui il codice viene condiviso con dispositivi non iOS, ad esempio Android o Windows Telefono sistemi operativi. Fornisce informazioni dettagliate sull'uso dei tipi nativi e offre diverse possibili soluzioni ai casi in cui il nuovo tipo deve essere usato con codice multipiattaforma.

Stack HttpClient e selettore dell'implementazione di SSL/TLS

Il nuovo selettore dello stack HttpClient controlla l'implementazione httpClient da usare nell'app Xamarin.iOS, Xamarin.tvOS e Xamarin.Mac. È ora possibile passare a un'implementazione che usa i trasporti nativi di iOS, tvOS o OS X (NSUrlSession o CFNetwork a seconda del sistema operativo).

SSL (Secure Socket Layer) e il suo successore TLS (Transport Layer Security), forniscono il supporto per HTTP e altre connessioni di rete tramite System.Net.Security.SslStream. La nuova opzione di compilazione dell'implementazione SSL/TLS passa dallo stack TLS di Mono e da uno basato sullo stack TLS di Apple presente in Mac e iOS.