Comptage automatique Référence: pointeur type non-const 'NSError * sans propriété explicite
-
25-10-2019 - |
Question
Dans la mise à jour une partie de mon code pour être compatible avec le SDK iOS 5, je tentai de factoriser mon code en utilisant « Convertir en Objective-C ARC » dans Xcode et reçu une erreur. L'erreur se produit sur une variable d'instance dans mon fichier .h.
NSError **_error;
L'erreur dit "pointeur type non-const 'NSError * sans propriété explicite." Comment pourrais-je résoudre ce problème?
La solution
Lors du stockage des objets NSError
dans une variable d'instance, vous devez déclarer comme un simple pointeur:
@interface Foo : NSObject
{
NSError *_errror;
}
NSError **
est utilisée uniquement à des objets de NSError
indirectement retour à partir d'un procédé à l'appelant. Il est (probablement) une erreur de le stocker dans une variable d'instance.
Autres conseils
Vous pouvez utiliser l'un des qualificatifs de vie décrites dans la section Evoluer vers le ARC notes de version
Pour NSError ** vous utiliseriez __autoreleasing donc l'exemple fourni par Nikolai alors ressembler à ceci
@interface Foo : NSObject
{
NSError * __autoreleasing *error;
}
La syntaxe est un peu bizarre et vous devriez suivre Nikolais conseils, mais si vous êtes sûr NSError ** est ce que vous voulez que cela devrait fonctionner.