Semplice e rapido Debug di ‘Unrecognized Selector Sent To Instance’

Anche voi vittima dell’errore “Unrecognized Selector Sent To Instance” ? XCode vuole comunicarvi qualcosa che non riuscite a cogliere?

Con questo semplice trucchetto potrete risparmiare ore di ricerca al bug!

Situazione tipo (non è importante che capiate ogni riga ma il senso generale.):

Ho tre ViewController. Dal primo ho un bottone che mi passa al secondo tramite segue e dal secondo al terzo nello stesso modo ma passando dei dati.
Dal secondo però voglio ripassare al primo tramite un altro bottone e qui nasce l’errore. Cosa può essere?

L’errore, ve lo dico subito, è che non ho inserito una verifica dell’identifier del segue che sto passando nel metodo “prepareForSegue” e quindi mi usa

TerzoViewController *terzaView = (TerzoViewController*)segue.destinationViewController;

anche se in effetti sto passando alla prima view, quindi vado a dire che la destinationView è la terza, caricando poi la prima.

XCode ci da solo un bell’errore che non ci schiarisce le idee:

xcode error selector 1

COME FARE?

Si aggiunge un breakpoint particolare. Aprite la tab dei breakpoint, cliccate in basso a sinistra sul + e scegliete “Add Symbolic Breakpoint”.

In Symbol inserite

-[NSObject(NSObject) doesNotRecognizeSelector:]

cliccate su Done e il gioco è fatto!

Al prossimo Run della vostra app vi fermerà l’esecuzione e vi mostrerà in lista il possibile errore che causa il crash.

xcode error selector 2

Come vedete, nel caso del nostro esempio, in lista compare il “prepareForSegue” che causa il nostro crash.

Da aggiungere in ogni progetto: provare per credere!

 

RICORDO ANCHE il breakpoint per ogni eccezione: cliccate sul + nel tab breakpoint, selezionate “Add Exception Breakpoint” e cliccate su Done. Vi avviserà quando qualcosa non quadra (non necessariamente bug da crash ma comunque bug da risolvere per evitare il rifiuto della vostra app da parte di Apple).

Annunci

, , , , , , ,

  1. Lascia un commento

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: