Domanda

In aggiornamento di alcuni del mio codice di essere in compatibile con iOS 5 SDK, ho tentato di refactoring il mio codice utilizzando "Converti in Objective-C ARC" in Xcode e ricevuto un errore. L'errore si verifica in una variabile di istanza nel mio file h.

NSError **_error;

L'errore dice "puntatore al tipo non-const 'NSError *' senza proprietà esplicita." Come potrei risolvere questo problema?

È stato utile?

Soluzione

Quando si ripone gli oggetti NSError in una variabile di istanza si deve dichiarare come un semplice puntatore:

@interface Foo : NSObject
{
    NSError *_errror;
}

NSError ** viene utilizzato solo per gli oggetti NSError indirettamente di ritorno da un metodo per il chiamante. E '(probabilmente) un errore per memorizzarlo in una variabile di istanza.

Altri suggerimenti

È possibile utilizzare una delle qualificazioni a vita descritte nel Transizione di ARC Note di rilascio

Per NSError ** usereste __autoreleasing così l'esempio fornito da Nikolai sarebbe quindi simile a questa

@interface Foo : NSObject
{
    NSError * __autoreleasing *error;
}

La sintassi è un po 'strano e si dovrebbe seguire il consiglio Nikolais, ma se sei sicuro NSError ** è ciò che si desidera che questo dovrebbe funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top