2013-09-25 7 views
15

sto avendo problemi di debug dalla console con debugger lldb dopo l'aggiornamento a Xcode 5. ho usato per digitare po object ed è abituato a lavorare bene, ma ora ho l'erroreXcode 5 debugger non oggetti di stampa

error: instance method 'performBlock:afterDelay:' has incompatible result types in different translation units ('id' vs. 'void') 
note: instance method 'performBlock:afterDelay:' also declared here 

qui c'è uno screenshot dello stack, il codice a cui il debugger si è fermato, i valori nel debugger visivo e nella console del debugger. quale potrebbe essere il problema, è un bug in xcode 5 o c'è qualcosa che posso fare per rettificare questo?

+0

Il debugger Xcode 5 funziona perfettamente per me, e io uso i comandi 'p' e' po' tutto il tempo ... ti sei assicurato che la tua configurazione di esecuzione fosse effettivamente impostata su 'debug' e non su' release'? (che in genere li spoglia)? –

+1

Modifica come sopra: almeno per il mio Xcode, se si imposta la configurazione di esecuzione su 'release', in realtà ignora i punti di interruzione ... Ho provato anche a cambiare il' code generation'> 'optimization level' tramite' build settings', che inoltre non ha riprodotto questo ... non so cosa tu abbia cambiato ... quindi, +1 e spero che qualcuno più luminoso di me possa aiutarti. : D –

+0

@ JRG-Developer la configurazione di esecuzione è impostata su 'debug'. Ho solo creato un collegamento simbolico al framework iokit che è richiesto per il progetto e non compila diversamente (fornisce un errore linker, sembra che Apple non abbia creato un link simbolico alla directory root framework a differenza di altre directory root framework prima di spedire xcode 5) – akaralar

risposta

7

Ho trovato un modo per risolvere questo problema. Il problema era che la mia struttura interna personali dichiarava un metodo in una categoria a NSObject denominata:

- (void)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 

Ma un quadro di terze parti (qui BlocksKit) è stato dichiarato lo stesso tipo di metodo:

- (id)performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay; 

Quei due sembravano interferire nel runtime di LLDB e stavano producendo questo strano messaggio. Per risolvere il problema, ho appena cambiato uno dei nomi del metodo. Per favore fatemi sapere se questo lavoro per voi.

+0

questo l'ha risolto per me, tu sei l'uomo, grazie! – akaralar

+0

E 'bello sentirlo come benvenuto di buon mattino! :-) – MonsieurDart

+0

Se qualcuno ha questo problema e sta usando il progetto UIKitCategoryAdditions, ha una categoria su NSObject che causa solo questo problema. Se si sta utilizzando questo progetto, suggerisco caldamente la correzione di cui sopra. –