2012-04-03 15 views
7

Sono seguito dal tutorial http://gabriel.github.com/gh-unit/docs/appledoc_include/guide_testing.html. Il problema è che il mio progetto usa ARC e GHUnit no. Ho gestito errori precedenti, ma ora dovrei fare cast cast, che non ho mai usato, e sono perso.ARC, colaggio a ponte e GHUnit

NSString *string1 = @"a string"; 
GHAssertNotNULL(string1, nil); //error here 

Descrizione di errore: conversione implicita di Objective-C tipo puntatore 'NSString *' a C di tipo puntatore 'const void *' richiede un cast ponte.

Qualsiasi aiuto di benvenuto :)

risposta

11

Poiché si sta confrontando una NSString, è necessario utilizzare il controllo GHAssertNotNil. Vedi NULL vs nil in Objective-C per maggiori informazioni.

Così il vostro esempio dovrebbe leggere:

NSString *string1 = @"a string"; 
GHAssertNotNil(string1, nil); 

Ho anche notato nei miei progetti arco utilizzando GHUnit che il file main.m GHUnit bisogno bandiera linker

-fno-objc-arc 

come è stato suggerito in precedenza .

+0

Buona cattura. La documentazione corrente utilizza solo GHAssertNotNull invece di GHAssertNotNil, che causa problemi con il codice ARC. –

1

È possibile escludere solo i file GHUnit da automatici che fanno riferimento (ARC) dal progetto andando in Fase di Costruzione -> compilare i sorgenti

e fare doppio click sul file da GHUnit, apparirà una scatola, pasta di seguito in esso

-fno-objc-arc 

Ciò escludere i file da GHUnit da automatici riferimento (ARC).

+1

Questa è una buona idea finché GHUnit non implementa ARC. Tuttavia, desidero ancora sapere come eseguire questi bridge, cercando di ottenere queste informazioni da alcuni riferimenti ARC. – Vive