Automatic Reference Counting: puntatore al tipo non-const 'NSError *' senza proprietà esplicita
-
25-10-2019 - |
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?
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 ??p>
@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.