Il codice Xcode 4 non funziona

Sto eseguendo un “vecchio” progetto Xcode 3 in Xcode 4 e il code sense non funziona per le mie classi. Ho provato a seguire:

  • Pulire / ricostruzione
  • Rimuovi i dati derivati
  • Installare la documentazione 4.3
  • Ricomincia

Senza fortuna

A volte il codice funziona, ma per lo più ottengo solo “Nessun completamento”.

Prova questo:

Apri Organizer, quindi scheda Progetto.

Cancella i “Dati derivati”. Xcode dovrebbe reindicizzare il tuo progetto e il code sense dovrebbe funzionare. Almeno ha funzionato per me.

So che è tardi, ma per riferimento: http://sealedabstract.com/code/when-xcode-4s-code-completion-autocomplete-breaks/

  • Chiudi il progetto, lasciando XCode ancora in esecuzione.

  • Apri la finestra Organizer di XCode, vai alla scheda Progetti, seleziona il progetto corretto e premi il pulsante Elimina accanto a “Dati derivati”.

  • Esci da XCode.

  • Passare al file .xcodeproject del progetto in Finder. Fai clic con il pulsante destro del mouse, seleziona “Mostra contenuto pacchetto”.

  • Lascia il file project.pbxproj, ma elimina il file project.xcworkspace, tutti i file .pbxuser e l’intera cartella userdata.

  • Apri il progetto in XCode. Vedrai XCode in alto sull’utilizzo della CPU per circa 10-60 secondi, a seconda delle dimensioni del tuo progetto. La finestra delle attività dirà “Indicizzazione”

  • Quando il picco della CPU ritorna a terra, il completamento del codice funzionerà di nuovo.

C’è un sacco di cose da fare, quindi per favore fai attenzione, ma sicuramente ha funzionato per me.

Ho fatto questo, e ha funzionato più volte per me (dopo aver provato tutto quanto sopra precedentemente).

Edit: Ora ho appena colpito lo spazio, backspace (la versione mac) e ribuild … funziona bene. Quindi, ricorda di scorrere (a volte i colors non vengono visualizzati finché non scorri da qualche parte)

  1. Trova il tuo file prefisso: “ProjectName_prefix.pch”.
  2. Commenta qualche riga. (in pratica lo cambia)
  3. Costruisci il tuo progetto, non importa se fallisce o meno.
  4. Non farlo.
  5. Costruisci di nuovo.

Sto scommettendo solo il passaggio 2 (modifica il prefisso) è ciò che fa, ma sostanzialmente ti rimettono in esecuzione. All’improvviso tutto si ricollega magicamente e completa le funzioni.

Buona fortuna se questo non risolve il problema, magari prova a farlo con i tuoi file pch di dipendenza (tre20 o FB API)

Cancellare i “Dati derivati” funziona solo temporaneamente per me. Devo farlo e quindi riavviare Xcode come 3-4 volte al giorno per ottenere il codice funzionante di nuovo.

Ho scoperto che la vera causa è nelle impostazioni di generazione del bersaglio . Ho spostato tutto da Percorsi di ricerca intestazione a Percorsi di ricerca intestazione utente ed è stato risolto. Nel mio caso, il framework con cui sto lavorando è RestKit.

A proposito, ho pensato a questo perché stavo aggiungendo un altro progetto ( QuickDialog ) al mio progetto ed ero curioso che stia usando i Percorsi di ricerca delle intestazioni degli utenti , ma non i Percorsi di ricerca delle intestazioni . Ecco la differenza tra loro.

Puoi correggere il problema modificando le impostazioni di build come questa, PreCompile Prefix Headers: NO

Cordiali saluti, se un file non ha il codice, ma il resto del tuo progetto lo fa, controlla che sia aggiunto a un bersaglio. Una volta fatto ciò, ho ottenuto il codice di riferimento in quel file.

Sono anni ma la risposta è solo per spostare il codice in una nuova cartella e il codice dovrebbe funzionare ora.

Ciò è accaduto quando ho aggiunto una nuova class Objective-C e il codice non funziona solo sui file .m e .h appena aggiunti (sull’ultimo aggiornamento di XCode 4 durante questo post).

Chiudi tutte le windows xcode

Elimina tutti i tuoi progetti da xcode> window> organizer e riavvia il tuo progetto. Ora rileverà e indicherà correttamente il tuo progetto.

Ho scritto a riguardo in dettaglio qui .

Fondamentalmente la mia correzione era quella con la localizzazione. Ho effettuato l’upgrade da xcode 3.2.5 a xcode 4 e poi ho risolto il problema con il builder di interfaccia integrato e ho triggersto la localizzazione per un file XIB accidentalmente, il che collocava i miei file sorgente nella directory en.lproj. Dopo averli spostati nella cartella Classes, ha funzionato perfettamente.

Di nuovo, per aiutare gli altri con questo problema che, nel mio caso, è accaduto con l’aggiornamento a Xcode 4.3.

Certo che ho provato le soluzioni offerte in questo post, e nessuno di loro ha funzionato. Ma il suggerimento di spostare la posizione del progetto in Finder ha riportato un po ‘di senso del codice, ma i suggerimenti non avevano alcun senso.

Alla fine ho cancellato il mio progetto e l’ho clonato nuovamente dal repository git . Questo mi ha ripagato Code Sense per me …

Apro un secondo progetto in background ogni volta che il rilevamento del codice Xcode smette di funzionare (di solito funziona la prima volta che apro il progetto ma dopo un po ‘il codice non funziona più). Quindi, quello che faccio è aprire un secondo progetto in Xcode. Xcode inizierà l’indicizzazione del secondo progetto e magicamente il codice del senso per il mio progetto principale è tornato.

Esecuzione di Xcode 4.3.1 su Lion

Spero che questo aiuti qualcuno.

Da questo commento qui sono stato in grado di eseguire il debug del problema sulla mia estremità, sembrava una brutta flag-w che il preprocessore clang non riconosceva correttamente. Fondamentalmente, in esecuzione

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

in Terminal aumenta la verbosità dell’indicizzatore e dovrebbe aiutarti a rintracciare i problemi. Apri Console.app e cerca i messaggi da Xcode, la stringa di ricerca IDEIndexingClangInvocation mi ha aiutato a trovarli.

Per me è successo semplicemente perché il file non aveva alcun target di appartenenza. Se le prime risposte non hanno funzionato per te, vai al tuo file .m (presumibilmente è questo file con cui stai avendo problemi), apri la vista Utilità (Modifica -> Utilità -> Mostra File Inspector) e sotto “Target Appartenenza “controlla la destinazione a cui desideri appartenere questo file.