English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Uso delle nuove funzionalità di Xcode 8 e problemi riscontrati

Ancora in uso con Xcode 7.3 senza aggiornamenti,毕竟可怜了我弄的那么多插件。。。Torniamo in tema, ho sempre seguito Xcode 8 dalla sua uscita. Oggi ho trovato un articolo che riassume molto bene, lo ho condiviso di proposito e l'ho anche riorganizzato, ringraziando l'autore originale!

Testo originale:

La versione ufficiale di Xcode 8 è stata distribuita ai sviluppatori il 13 settembre. Dopo il mio ritorno il 1 novembre, ho scaricato il nuovo Xcode. Dopo il download, sono stati rilevati molti errori di compilazione, e i plugin precedenti non funzionano più. Tuttavia, ho scoperto che Xcode 8 ha integrato molte funzionalità di plugin decenti, il che è anche piuttosto interessante.

Ogni versione di Xcode introduce molte nuove funzionalità, Xcode 8 non fa eccezione. Queste nuove funzionalità ci rendono più facili i nostri sviluppi, ma possono anche comportare molti problemi. Ecco perché oggi voglio scrivere un articolo per dettagliare le nuove funzionalità di Xcode 8, i problemi che possono sorgere e alcune difficoltà che ho incontrato durante l'uso, sperando di aiutare altri amici.

Nuove funzionalità di Xcode 8

Interface Builder

Con l'introduzione dell'iPhone 6 e 6P nel 2014, la dimensione degli schermi degli iPhone è cresciuta sempre di più, l'adattamento degli schermi è un problema da risolvere, e non si sa mai quale dimensione di iPhone Apple presenterà in futuro.

Nello stesso anno di lancio dell'iPhone 6 e 6P, Apple ha introdotto la nuova funzionalità Size Classes nel Xcode 6, basato sull'esistente Auto Layout, che permette di utilizzare un file XIB o SB per adattarsi a diversi schermi e ai dispositivi iPhone e iPad.

In Xcode8, Apple ha introdotto una funzione di anteprima di editing visivo più potente, che consente di visualizzare in anteprima l'aspetto di XIB o SB su diverse dimensioni di schermo senza avviare l'app. (Ricordo che questa funzione esisteva già in Xcode, ma era nascosta, e ora Apple l'ha resa più accessibile)
Selezionare un file XIB e fare clic sulla posizione del riquadro rosso in basso, verranno visualizzati una serie di opzioni di dimensioni di schermo da 3.5 pollici a 5.5 pollici. Cliccando direttamente su diverse dimensioni di schermo e opzioni di orientamento orizzontale/verticale è possibile passare a diversi modi di visualizzazione. Su iPad è anche possibile scegliere se dividere lo schermo, una funzione molto potente.

 

Interface Builder

Nella parte destra c'è l'opzione Vary for Traits, cliccando su questa opzione è possibile visualizzare contemporaneamente tutti i modelli di schermo selezionabili, le funzioni sono le stesse dell'immagine sopra, ma la visualizzazione sembra essere più ampia.

 

Interface Builder

Inoltre, le dimensioni dei controlli XIB creati di recente non sono più quadrati di 600x600 come prima, ma sono file rettangolari XIB di default per iPhone 6s, che sembrano molto più confortevoli.

Modifiche in General del Target

Prima di Xcode8, era necessario impostare manualmente i certificati e i file di descrizione. Se si verificano errori durante l'impostazione, è possibile correggere questi errori cliccando su Correggi problema. Tuttavia, c'è un problema con l'opzione Correggi problema, che non è così utile, a volte l'impostazione è corretta ma viene comunque segnalato il bisogno di Correggi problema.

Forse Apple si è anche resa conto dell'esistenza di questo problema, e in Xcode8 è possibile utilizzare l'opzione Gestione automatica della firma per far sì che Apple gestisca i certificati e i file di configurazione per noi, e tutte le impostazioni sono completate da Apple. Quando si crea un nuovo progetto in Xcode8, questa opzione è preselezionata di default.

 

Gestione automatica della firma

Dalla figura sopra si può vedere che Apple ci aiuta a gestire automaticamente i certificati e i file di configurazione. E prima di questo progetto, se si desidera impostare il nome dell'app che viene visualizzato sul telefono dopo l'installazione, era necessario modificare il campo Display Name nel file Info.plist, mentre ora è possibile fare la modifica direttamente in General, e questa modifica è sincronizzata con Info.plist.

Ma cosa fare se voglio gestire manualmente i certificati e i file di descrizione? Basta deselezionare l'opzione Gestione automatica della firma.

Gestione automatica della firma

Se si va manualmente in Build Settings per impostare manualmente i certificati e i file di descrizione, si può notare che l'opzione Provisioning Profile è stata contrassegnata come Obsoleta, il che significa che Apple non raccomanda di impostare manualmente.

Plugin di Xcode

Dopo aver aggiornato Xcode8, si noterà che tutti i plugin di terze parti non funzionano più in Xcode8 e nemmeno l'opzione di plugin nella barra del menu esiste più. Prima molti sviluppatori iOS utilizzavano Alcatraz per gestire i plugin, ora Alcatraz non è più disponibile. Tuttavia, Xcode8 ha anche aggiornato il compilatore, aggiungendo alcune funzionalità di plugin migliori a Xcode, come l'evidenziazione di una riga singola.

In Xcode8 è stato supportato lo sviluppo di progetti di plugin e ci è stato fornito un modello di plugin, i plugin sviluppati possono essere caricati su App Store per il download. Apple ha fatto questo per un motivo: prima Xcode e i plugin esistevano nello stesso processo, quindi il crash dei plugin poteva anche causare il crash di Xcode. Ora Apple sta separando i plugin come un'applicazione a sé stante, che esegue in un processo separato, senza influenzare altri aspetti di Xcode.

 

Xcode Source Editor Extension

Runtime Issues

Nel processo di sviluppo, a causa di errori di sintassi o errori di codice evidenti (ad esempio Retain Cycle), il compilatore può rilevarli e emettere avvisi gialli o rossi. Tuttavia, alcuni errori causati dalla logica del codice non possono essere trovati dal compilatore. Ad esempio, la seguente riga di codice, a causa di problemi di logica del codice, fa sì che due array si riferiscano l'un l'altro e non possano essere liberati.

 

Ciclo di riferimento dell'array

In questo momento è possibile utilizzare la nuova funzionalità Runtime Issues fornita da Xcode8 per trovare i problemi che si verificano durante l'esecuzione e visualizzare i problemi in modo visivo attraverso un grafico per gli sviluppatori.

 

Runtime Issues

Debug Memory Graph

In Xcode6 è comparsa la nuova funzionalità Debug View Hierarchy, che può essere utilizzata per debuggare la gerarchia delle viste dell'applicazione corrente, è molto comodo trovare bug relativi all'UI. In Xcode8 Apple ha fornito la funzionalità Debug Memory Graph agli sviluppatori, attraverso questa nuova funzionalità è possibile selezionare direttamente un oggetto e vedere le relazioni di memoria ad esso correlate.

 

Debug Memory Graph

Debug Memory Graph e Runtime Issues possono essere utilizzati insieme, dopo aver analizzato le relazioni di memoria tramite Debug Memory Graph, cliccando su Runtime Issues è possibile vedere i problemi di memoria già scoperti.

Swift 3

Xcode8 ha portato una nuova versione di Swift3, la nuova versione di Swift ha cambiato molto, se un progetto Swift di vecchia versione viene compilato su Xcode8 potrebbe fallire. A questo proposito, Apple ha fornito uno strumento di migrazione Swift per gli sviluppatori, ho sentito che non è molto utile (non ho mai usato questo strumento).

Se non si desidera迁移 immediatamente a Swift3, è possibile impostare nel Builder Settings, selezionare Usa versione linguistica Swift Legacy come YES, per continuare a utilizzare la versione Swift2.3 vecchia.

 

Usa versione linguistica Swift Legacy

Altri aggiornamenti

Nuovo tipo di carattere di Xcode versione nuova, SF Mono Regular. Dopo l'aggiornamento di Xcode, mi piace molto questo tipo di carattere, sembra molto ordinato.

Le righe modificate vengono evidenziate. Prima Xcode aveva un plugin con questa funzione, Xcode8 ha integrato questa funzione, rendendola molto facile da usare.

La versione più recente della documentazione API ha subito grandi cambiamenti nel modo di visualizzazione.

Generazione più semplice dei documenti (è il documento scritto da Miao Shen, VVDocumenter), in Xcode8 è possibile posizionare il cursore sopra il metodo e generare i commenti dei documenti utilizzando la scorciatoia di tastiera option + command + /.

Adattamento Xcode 8

Adattamento XIB e Storeboard

Prima di Xcode8, creare un file XIB o SB era un quadrato XIB di 600*600. Dopo Xcode8, i file XIB creati sono di default di dimensione 6s.

Ma quando Xcode8 apre i file XIB o SB di progetti precedenti, viene visualizzata la finestra di dialogo seguente, a quel punto di solito si seleziona Choose Device.

 

Scegliere una vista di dispositivo iniziale

Ma c'è un problema, se Xcode8 ha aperto questo file XIB e ha selezionato Choose Device. Gli compilatori di Xcode8 inferiori non possono più aprire questo file, mostreranno l'errore seguente:

Il documento “ViewController.xib” richiede Xcode 8.0 o versione successiva. Questa versione non supporta i documenti salvati nel formato Xcode 8. Aprire questo documento con Xcode 8.0 o versione successiva.

Ci sono due metodi per risolvere questo problema:

Allo stesso tempo, aggiornare Xcode8, è consigliabile questo metodo, dovresti accettare il cambiamento.

Fare clic destro sull'XIB o il file SB -> Apri come -> Codice Sorgente, elimina la riga di campo seguente nel file xml.

Errori di compilazione

Dopo l'aggiornamento a Xcode, Xcode8 non è compatibile con alcuni modificatori e sintassi precedenti, causando errori di compilazione. Le cause di questi errori sono molte, elenco solo alcune, modificare secondo le circostanze individuali.

In precedenza, alcuni modificatori generici come nullable avrebbero generato errori.

CAAnimation e le sue sottoclassi, dopo aver impostato l'attributo proxy, devono rispettare l'@interface() come proxy, altrimenti verrà generato un errore, ecc.

Adattamento dei permessi

Questo dovrebbe essere considerato come l'adattamento del sistema iOS10, sto lavorando su questi due ultimi, quindi li ho scritti insieme all'adattamento di Xcode8.

Dopo iOS10, è necessario aggiungere nuovi campi nel file Info.plist per ottenere i permessi, altrimenti l'esecuzione su iOS10 causerebbe un crash. Ecco alcuni campi comuni, se mancano

Meno dettagli, prego di aggiungere nei commenti.

Riferimenti: developer.apple

Notifiche push

Le notifiche push di Apple sono state aggiornate in modo significativo in iOS8 e iOS9, la funzione di push è sempre più potente. Dopo iOS10, Apple ha introdotto la framework UserNotifications, che permette di controllare meglio le notifiche push, aggiornare e modificare i messaggi di lock screen, aggiungere immagini e funzioni simili.

Ma dopo aver pacchettizzato con Xcode8 e senza modificare il codice, si scoprirà che Apple ha inviato una email. La lettera roughly significa che se si desidera utilizzare le notifiche push, è necessario modificare il codice, altrimenti non si potranno utilizzare le notifiche push.

 

Push Notifications

Questo è perché dopo Xcode8, se si desidera utilizzare la funzione Push Notifications, è necessario selezionare Capabilities -> Push Notifications come SI, altrimenti ci saranno problemi con la推送通知 remota e si riceverà questa email da Apple.

Eliminare i log di sistema

Dopo l'aggiornamento a Xcode8, durante il debug e l'esecuzione, ho notato che la console ha stampato molti log non riconosciuti, questi log sono stampati dal sistema e non hanno nulla a che fare con lo sviluppatore. Ma

Con così tanti log sembra un po' caotico, come posso nasconderli?

sistema: com.apple.UIKit, categoria: HIDEventFiltered, livello_abilitazione: 0, livello_persistenza: 0, ttl_predefinito: 0, ttl_info: 0, ttl_debug: 0, generare_sintomi: 0, abilitare_oversize: 1, impostazioni_privacy: 2, abilitare_dati_privati: 0

Aggiungi il campo OS_ACTIVITY_MODE in Target -> Modifica Schema -> Esegui -> Argomenti e impostalo su Disable.

 

OS_ACTIVITY_MODE

A proposito, negli ultimi due giorni, impostando le opzioni di log, ho scoperto che è possibile stampare il tempo di caricamento dell'app impostando i parametri negli Argomenti, inclusi il tempo di caricamento complessivo, il tempo di caricamento delle librerie dinamiche ecc. 

Aggiungi il campo DYLD_PRINT_STATISTICS nelle Variabili di Ambiente e impostalo su YES, il messaggio di caricamento verrà stampato sulla console.

Messaggio stampato sulla console

Allarme di awakeFromNib

Nel progetto vecchio in Xcode8, alcuni punti di override del metodo awakeFromNib riportano l'errore di seguito. Questo è dovuto al fatto che non si chiama il metodo super, fortunatamente chiudo sempre super, il codice non ha problemi adesso.

Metodo potrebbe mancare una chiamata a [super awakeFromNib]

Le caratteristiche nuove di Xcode 8 e i problemi che ho incontrato sono stati introdotti dall'autore per voi, spero che possano essere utili. Se avete qualsiasi domanda, lasciate un messaggio, l'autore risponderà tempestivamente. Ringrazio anche tutti i sostenitori del sito Web Yell Tutorial!

Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta ai rispettivi proprietari, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato elaborato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.

Ti potrebbe interessare