Frage

Bei der Aktualisierung eines Teils meines Codes, um mit dem iOS 5 SDK kompatibel zu sein, versuchte ich, meinen Code mit "Konvertieren in den Objective-C-ARC in Xcode konvertieren" und empfing einen Fehler. Der Fehler tritt in einer Instanzvariablen in meiner .h -Datei auf.

NSError **_error;

In dem Fehler heißt es "Zeiger auf nicht konstantes Typ 'nSerror *' ohne explizites Eigentum." Wie könnte ich das beheben?

War es hilfreich?

Lösung

Beim Speichern NSError Objekte in einer Instanzvariablen müssen Sie es als einfachen Zeiger deklarieren:

@interface Foo : NSObject
{
    NSError *_errror;
}

NSError ** wird nur verwendet, um indirekt zurückzukehren NSError Objekte von einer Methode zum Anrufer. Es ist (wahrscheinlich) ein Fehler, es in einer Instanzvariablen zu speichern.

Andere Tipps

Sie können einen der in der beschriebenen lebenslangen Qualifikation verwenden Übergang zu ARC -Versionsnotizen

Für NSError ** Sie würden __Autorelease verwenden, sodass das von Nikolai bereitgestellte Beispiel so aussehen würde

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

Die Syntax ist etwas seltsam und Sie sollten Nikolais -Ratschlägen folgen, aber wenn Sie sicher sind, dass NSError ** das ist, was Sie wollen, sollte dies funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top