Apple rilascia Xcode 5.1 risolvendo vari problemi e implementando una moltitudine di nuove funzioni

  Xcode è il programma che contiene tutti gli strumenti di cui uno sviluppatore di applicazioni ha bisogno per sviluppare e avviare un'applicazione App Store, e questa sera Apple lo ha aggiornato. Versione 5.1a Xcode arriva con iOS 7.1, consentendo agli sviluppatori di rendere le proprie applicazioni compatibili con la nuova versione del sistema operativo. Xcode 5.1 viene rilasciato con l'idea di risolvere una moltitudine di problemi della versione precedente, e attraverso il changelog qui sotto potrete scoprire esattamente cosa funzionerà meglio o cosa troverete di nuovo.

Nuove funzionalità

Debug

  • Quick Look può essere implementato per classi definite dallo sviluppatore Quando un'istanza di una classe personalizzata viene visualizzata con Quick Look nella vista delle variabili del debugger o in un tipo di dati, il debugger la presenta utilizzando un metodo denominato -debugQuickLookObject definito nell'implementazione della classe. Per dettagli su come utilizzare questa funzionalità, vedere Ricerca rapida dei tipi personalizzati nel debugger Xcode. (12723736)
  • Le azioni del punto di interruzione del registro ora stampano il valore logico delle espressioni. Ad esempio, un'azione del punto di interruzione del registro come "myString = @myString@" ora stampa il valore di myString, anziché il valore del puntatore. (13211695) 

Modifica delle interfacce utente

  • I documenti di Interface Builder possono contenere informazioni specifiche sulle nuove funzionalità utilizzate e sulle versioni del sistema operativo richieste, consentendo alle versioni precedenti di Xcode di visualizzare messaggi di avviso migliori quando si tenta di aprire tali documenti. (7659982)
  • La creazione di interfacce in Interface Builder utilizzando il layout automatico offre la suite completa di possibili tipi di vincolo: proporzioni, dimensioni e posizioni proporzionali, allineamenti di attributi incrociati e un nuovo ispettore di vincoli con funzionalità per la modifica di quasi tutte le proprietà di un vincolo.
  • L'ispettore Attributi del vincolo di Interface Builder mostra gli elementi e gli attributi di un vincolo e consente la modifica degli attributi. Questa funzionalità consente la possibilità di creare vincoli tra attributi come view1.centerY = view2.bottom. (13739009)
  • È possibile utilizzare Interface Builder per modificare la relazione di qualsiasi tipo di vincolo, inclusi i vincoli di allineamento (ad esempio, view1.leading <= view2.leading) e vincoli di pari dimensione (ad esempio, view1.width >= view2.width). (14721954)
  • Puoi creare proporzioni e vincoli di dimensionamento proporzionale e modificare il moltiplicatore dei vincoli in Interface Builder. Il moltiplicatore può essere un numero decimale (ad esempio, 0.5), una frazione (ad esempio, 1/2) o proporzioni (ad esempio, 1:2). (11935843)
  • I vincoli associati alle viste ambigue in Interface Builder vengono disegnati in arancione solo nell'asse con ambiguità. Ciò rende più rapida l'identificazione di un potenziale problema nell'area di disegno. (15114120)
  • Il canvas di Interface Builder ora visualizza gli scroller sovrapposti quando appropriato, in base all'impostazione "Mostra barra di scorrimento" nel riquadro Generale in Preferenze di Sistema. (10069033)
  • L'ispettore Interface Builder ora supporta:
    • NSTableView - floatsGroupRows proprietà (9617000)
    • UISegmentedControl - apportionsSegmentWidthsByContent proprietà (9950528)
    • UITableView - sectionIndexBackgroundColor proprietà (14776025)
    • Impostazione del tipo di pulsante "Dettagli" per il prototipo UITableViewCell - editingAccessoryType proprietà (15039987)

Strumenti e simbolizzazione

  • Gli strumenti ora trovano i simboli in modo molto più affidabile. Se i simboli non vengono visualizzati automaticamente, prova quanto segue: The instruments lo strumento da riga di comando ora supporta la specifica dell'SDK del simulatore e del tipo di dispositivo utilizzando il file -w bandiera Per visualizzare un elenco delle configurazioni del simulatore supportate e dei dispositivi collegati, eseguire instruments -s devices in una finestra di Terminale. (14996865)
    • Quando l'indicizzazione Spotlight è disabilitata per i dati derivati ​​da Xcode, come quando si utilizza /tmp, aggiungi un elenco globale di percorsi di ricerca aggiuntivi configurati nelle preferenze Strumenti.
    • Il menu contestuale di un indirizzo ora include l'opzione "Simbolica con DSYM" per aggiungere un file di simboli specifico.
    • Utilizzare il comando Simboli del menu File per visualizzare un elenco più dettagliato dello stato dei singoli eseguibili e delle librerie.
      • Le luci verdi indicano la presenza di simboli e informazioni sulla fonte.
      • Le luci gialle indicano le librerie con alcuni simboli ma possono comunque trarre vantaggio dall'individuazione di un dSYM.
      • Le luci rosse indicano situazioni che impediscono il simbolismo. (14269449)

Installazione con script

  • Installazione di Device SupportEsegui dalla riga di comando, Xcode.app accetta il nuovo argomento della riga di comando, -installComponents. Quando Xcode viene eseguito da uno script della riga di comando con questa opzione, installa i pacchetti di supporto del dispositivo richiesti e quindi si chiude. (15127411) 

Generale

  • Emoji e altre coppie di surrogati Unicode sono supportate nelle impostazioni dello schema e nei file di progetto. (14837623 e 13827044)

Modifiche

Costruzione

  • Arm64 è ora incluso nell'impostazione "Architetture standard". Xcode 5.0 ha introdotto il supporto per la creazione di applicazioni iOS a 64 bit ma non era abilitato per impostazione predefinita. Per abilitare l'opzione di creare 64 bit in Xcode 5.0, è stata fornita un'impostazione per le architetture: "Architetture standard incluse 64 bit" (ARCHS_STANDARD_INCLUDING_64_BIT).Con l'introduzione di Xcode 5.1, arm64 è incluso nell'impostazione di build predefinita "Architettura standard". Ciò si traduce in progetti che utilizzano l'impostazione predefinita creando automaticamente per arm64 insieme alle architetture standard a 32 bit.
  • Quando si compila per tutte le architetture, rimuovere qualsiasi impostazione di architetture esplicita e utilizzare l'impostazione predefinita di Architetture standard. Per i progetti per i quali è stato precedentemente attivato l'utilizzo di "Architetture standard inclusi 64 bit", torna all'impostazione "Architetture standard".
  • Quando si apre un progetto esistente per la prima volta, Xcode 5.1 potrebbe visualizzare un avviso sull'utilizzo dell'impostazione dell'architettura Xcode 5.0. La selezione dell'avviso fornisce un flusso di lavoro per modificare l'impostazione.
  • I progetti che non supportano la versione a 64 bit devono impostare specificatamente le impostazioni di build dell'architettura in modo da non includere la versione a 64 bit.
  • I progetti configurati per utilizzare "Architetture standard inclusi 64 bit" verranno convertiti in "Architetture standard $(ARCHS_STANDARD).

Compiler

  • A partire dal compilatore Apple LLVM versione 5.1 (clang-502) e successive, il livello di ottimizzazione -O4 non implica più l'ottimizzazione del tempo di collegamento (LTO). Per creare con LTO utilizzare esplicitamente il file -flto opzione oltre al flag del livello di ottimizzazione. (15633276)

Testing

  • gcov lo strumento per il test della copertura del codice è stato reimplementato. La nuova versione utilizza il llvm-cov strumento dal progetto LLVM. Funzionalmente è equivalente alla vecchia versione per tutte le caratteristiche significative. La posizione di gcov anche all'interno di Xcode è stato spostato, usa xcrun per invocarlo. Se trovi problemi, invia segnalazioni di bug. Per questa versione è ancora possibile utilizzare la versione precedente di gcov da GCC, che è disponibile come gcov-4.2. 11919694 aggiornato

Problemi noti

Modifica delle interfacce utente

  • Le visualizzazioni personalizzate aggiunte a una visualizzazione stack in Interface Builder possono rimanere bloccate in uno stato di "visualizzazioni fuori posto" (incoerenti). Come soluzione alternativa, imposta una dimensione intrinseca segnaposto per la visualizzazione personalizzata con priorità di abbracciamento del contenuto e resistenza alla compressione appropriate. (15778653)

Testing

  • I test automatizzati eseguiti nel simulatore iOS potrebbero non riuscire con un errore simile al seguente:Test target [test name] encountered an error (Test process exited with code -1)Tentare il ripristino chiudendo e riavviando il simulatore. (15929053)

XcodeServer

  • Le funzionalità di integrazione continua (bot) di Xcode 5.1 richiedono OS X Server v3.1 (o una versione di OS X Server 3.1 beta) o successiva. 16225068 aggiornato
  • Se sono presenti vecchie copie di Xcode sull'host del server, Xcode Server a volte mostra tutti i simulatori. Tentare di utilizzare solo simulatori appropriati per l'uso con Xcode 5.1. (15465692 e 15153869)
  • Xcode Server offrirà Tutti i dispositivi o Tutti i simulatori anche se non ce n'è nessuno che soddisfi i criteri del progetto. Se selezioni un dispositivo o un simulatore inappropriato, potresti ricevere un errore simile a:xcodebuild: error: No destinations were specified with the -destination flag which were valid for the specified scheme <scheme_name>.Per evitare che ciò accada, specifica solo dispositivi o simulatori validi per il tuo progetto. (15465222)
  • A volte, quando tenti di creare un nuovo repository locale su OS X Server tramite Xcode, Xcode potrebbe visualizzare un messaggio di errore simile a:xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.Per risolvere questo problema, seguire le istruzioni nella finestra di dialogo visualizzata sul sistema host OS X Server. (15475078 e 15486464)
  • A volte, dopo l'aggiornamento a Xcode 5.1 e OS X Server 3.1, la prima volta che aggiungi un server potresti visualizzare un errore simile a:"<Server> is running a version of OS X Server that cannot be used with this version of Xcode."Esci e riavvia Xcode una volta per cancellare questo messaggio. Aggiornamento 16217715 

Simulatore iOS

  • Possono verificarsi problemi di prestazioni durante l'esecuzione di app all'interno del simulatore iOS su OS X Mavericks con una versione simulata del sistema operativo iOS 6.1 o precedente. Una soluzione alternativa consiste nel disabilitare la coalescenza del timer durante l'utilizzo del simulatore iOS 6.1 o precedente eseguendo il seguente comando in una finestra di Terminale :sudo sysctl -w kern.timer.coalescing_enabled=0 (15501929)
  • Il simulatore iOS a volte smette di rispondere alla tastiera hardware. In genere, l'uscita e il riavvio del simulatore risolvono questo problema. (14642684)

Generale

  • Quando si convalidano più applicazioni in sequenza utilizzando Xcode Organizer, potrebbero essere emessi avvisi errati sugli ID bundle. Se si verificano questi avvisi, chiudere e riavviare Xcode tra una convalida e l'altra. 15113664 aggiornato
  • Gli eseguibili creati da Xcode 5.1 potrebbero bloccarsi su OS X v10.5. (15852259) aggiornato

Problemi risolti

Testing

  • XCTAssertEqual macro (precedentemente STAssertEquals utilizzando OCUnit) confronta correttamente valori scalari di diversi tipi senza cast, ad esempio, int edNSInteger. Non può più accettare tipi non scalari, come le strutture, per il confronto. (14435933)

Generale

  • Le app OS X che richiedono un profilo di provisioning, come quelle che utilizzano iCloud, ora vengono create, vengono firmate correttamente con il codice e vengono avviate. (15841159)

deprecazioni

  • OCUnit e il framework SenTestingKit sono deprecati e verranno rimossi da una futura versione di Xcode. Il codice sorgente che utilizza OCUnit genera avvisi durante la compilazione in Xcode 5.1. Migrare a XCTest utilizzando il comando di menu "Modifica > Refactoring > Converti in XCTest...". .
  • Il framework ATS è deprecato. Il codice sorgente che utilizza le API ATS genererà avvisi durante la compilazione. Per la versione 10.8, non ci sarà alcuna perdita di funzionalità ma potrebbero esserci aree in cui le prestazioni ne risentiranno. Sostituisci tutto il codice ATS (incluso ATSUI) Con CoreText. La funzionalità ATS verrà rimossa nelle future versioni di OS X. Ulteriori informazioni su questa modifica sono disponibili inGuida alla programmazione del testo principale.