2011-11-03 14 views
54

Ho importato il progetto three20 nel mio progetto e, quando ho eseguito l'aggiornamento a Xcode 4.2 con iOS 5, nel progetto sono comparse alcune avvertenze.Disabilita avvisi in Xcode da framework

Non mi importa di loro, ma fanno un sacco di rumore, ed è facile perdere ogni vero avvertimento nel mio progetto ora. C'è un modo per disabilitare gli avvisi per quelle librerie specifiche?

risposta

138
  1. Se le librerie di terze parti vengono aggiunti come un obiettivo separato, è possibile controllare Inhibit all warnings per questo specifico target di trasformare tutte le avvertenze off.

  2. Se la libreria è aggiunta come file di origine semplice alla destinazione corrente, è possibile impostare il flag di compilatore -w per le singole origini per disattivare tutti gli avvisi in esse contenuti. Devi andare al menu Build phases della configurazione di destinazione e impostare questo flag per ogni file sorgente nella sezione Compile Sources facendo doppio clic su ogni estremità del file immettendo il flag -w. enter image description here

+12

Questo è assolutamente l'approccio corretto. Non modificare il codice di terze parti e non disattivare gli avvisi a livello globale. Un altro approccio simile è quello di spostare il codice di terze parti in un progetto separato e costruire una lib statica. In questo modo può avere le sue impostazioni di compilazione. –

+1

Ogni tanto mi infilo in una risposta che vorrei poter alterare almeno un paio di volte. Questa è una di quelle volte. –

+0

[Questo articolo] (http://adoptioncurve.net/archives/2013/02/selectively-disabling-warnings-with-xcode-compiler-flags/) fornisce alcuni dettagli aggiuntivi sui singoli flag dei file. Suggeriscono di usare '-w -Xanalyzer -analyzer-disable-checker' – KPM

3

Se si utilizza cialde, è possibile aggiungere questo al vostro podfile per evitare avvisi di registrazione:

post_install do |installer| 
    installer.pods_project.targets.each do |target| 
    target.build_configurations.each do |config| 
     config.build_settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = "YES" 
    end 
    end 
end 
Problemi correlati