2016-06-14 6 views
20

Ho appena aggiornato il mio progetto su Xcode 8 e trovo questi errori in più framework esterni che include la mia app. C'è una soluzione alternativa, magari toccando le impostazioni, per evitare errori di compilazione?Xcode 8: 'objc_unretainedPointer' non è disponibile usa un cast __bridge invece

Questo è un esempio di errore: (Che non sono in grado di modificare perché è un quadro importata)

const void * ivarPtr = objc_unretainedPointer(self) + ivar_getOffset(ivar); 
[decoder decodeValueOfObjCType:[ivarInfo[@"encoding"] UTF8String] at:(void *)ivarPtr]; 
+0

Mostra le righe che causano gli errori e i messaggi di errore completi. – Droppy

+0

Che cos'è 'ivar'? Puoi fornire qualche altro contesto per favore? – JAL

+0

ivar è Ivar ivar = class_getInstanceVariable (ivarInfo [@ "class"], [ivarName UTF8String]); ma credo che questo non sia rilevante dal momento che c'è poco che posso modificare in questo perché stiamo parlando di codice che è all'interno di un framework esterno di una parte esterna. – tonik12

risposta

18

Per Xcode 8, dovrebbe essere:

const void * ivarPtr = (__bridge void *)(self) + ivar_getOffset(ivar); 
+0

Questo non risolve il problema, poiché questo sta accadendo in un framework esterno che non ho la possibilità di modificare. – tonik12

+0

@ user2461338 Quindi stai cercando una soluzione che non richiede modifiche al codice? – Droppy

+0

Credo che sia l'unico modo. Altrimenti, sarò lieto di sentire. – tonik12

2

si può semplicemente Sostituire objc_unretainedPointer(self) a (__bridge void *) (autonomo)