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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top