2016-07-07 52 views
7

È necessario inserire codice nativo nell'app Codename One. Sono un neofita della programmazione iOS, quindi ho bisogno di imparare Objective-C. Tuttavia ho letto che Swift era il successore di Objective-C e mi sentirei più a mio agio con la sintassi Swift. Ma non so se Swift sia supportato in Codename One. Mentre guardo il codice sorgente di iOS generato da Codename One, anche se non ne sono sicuro al 100%, sembra un codice C (potrei sbagliarmi).È possibile utilizzare il codice rapido in Codename One codice nativo anziché Objective-C

Sul suo blog Shannah (da Codename One) wrote that

Codename quello attualmente compila tutto fino pianura vecchio codice C così ci sarebbe in gran parte influenzato da un tale cambiamento - anche se ci sarebbero alcune porzioni autoctone che utilizzare Objective-C che necessiterebbe di aggiornamento. Fortunatamente, se sei un utente Codename One, non devi preoccuparti di questi dettagli perché stai lavorando in Java.

Non capisco perché mi chiedo se sia possibile utilizzare il codice Swift in Codename One codice nativo?

Grazie mille per avermi aiutato a chiarire questo argomento!

Cheers

+0

Ti chiedi come hai fatto a fare questo? Ho avuto la stessa domanda. – Schreiby

risposta

1

Sì e no. Probabilmente puoi compilare il codice Swift in una libreria statica oggi (.a file) e usarlo come qualsiasi libreria statica dove il codice Objective-C funge solo da ponte.

Utilizzando Swift è direttamente problematico dovuto a diversi fattori:

  • Attualmente stiamo ancora usando una vecchia versione di Xcode quando si costruisce, abbiamo fatto un attempt at migrating to the latest ma aveva un setback. Migreremo con speranza prima che esca 3.5, se non poi poco dopo.
    Swift richiede una versione relativamente nuova di xcode, quindi finché eseguiremo l'incorporamento del codice Swift sarà problematico.

  • Swift assume ARC. Questo è qualcosa che abbiamo cercato di integrare con il GC ma in questo momento non funziona davvero bene.

  • Abbiamo bisogno di generare stub Swift come opzione, questo è problematico come dire che hai cn1lib esistente o interfaccia nativa che si basa su Objective-C potrebbe creare un conflitto.

Ma consente di risalire un po '. Swift è un enorme vantaggio rispetto a Objective-C, che è piuttosto vecchio ormai. Ma non ha alcun vantaggio importanti per gli sviluppatori di Codename One ...

  • non è più veloce come Codename One si traduce in C, che è più veloce di entrambe Swift e Objective-C

  • E ' non renderà il codice molto più pulito, se hai un sacco di codice nelle tue interfacce native allora stai facendo qualcosa di sbagliato. La maggior parte del tuo codice è comunque in Java, puoi discutere dei vantaggi di Java vs. Swift ma se stai usando Codename One, allora hai scelto Java.

  • Se è necessario utilizzare un'app scritta in Swift, è possibile comprimerla come libreria statica.

Quindi in questo momento non esiste un vero caso d'uso per Swift in Codename One.

+0

Grazie per la tua risposta completa. Il codice nativo che devo scrivere è piccolo, devo ancora impararlo. Quindi preferirei imparare qualcosa di moderno rispetto a qualcosa di più vecchio. Ma ho capito il tuo punto ;-) – HelloWorld