Utilizzare NSAssert() e i relativi companion.
nel progetto definiscono NS_BLOCK_ASSERTIONS
per la configurazione di rilascio.
I tremoletti Xcode 4 disabilitano NSAsserts
nella configurazione di rilascio. Aggiunge
-DNS_BLOCK_ASSERTIONS=1
a "Altri flag C" per "Rilascio".
Dalla documentazione:
affermazioni sono disabilitate se è definito il preprocessore macro NS_BLOCK_ASSERTIONS
.
La macro NSAssert valuta la condizione e funge da front-end del gestore di assertion.
Ogni thread ha il proprio gestore di asserzione, che è un oggetto della classe NSAssertionHandler
. Quando viene richiamato, un gestore di asserzioni stampa un messaggio di errore che include i nomi di metodi e classi (o il nome della funzione). Quindi solleva un'eccezione NSInternalInconsistencyException
. Se la condizione viene valutata su NO, la macro richiama handleFailureInMethod:object:file:lineNumber:description:
sul gestore assertion per il thread corrente, passando desc come stringa di descrizione.
Questa macro deve essere utilizzata solo con i metodi Objective-C.
È, francamente, un design pazzesco che afferma di non essere disattivato nelle versioni di rilascio per impostazione predefinita. Vola di fronte a ogni altro compilatore C che conosco. –
@SevaAlekseyev Siamo d'accordo, abbiamo avuto uno shock quando le asserzioni sono ancora arrivate in Release. Completamente non convenzionale. La nostra filosofia è "fallire velocemente nello sviluppo, morire duramente nella produzione". –