Wie gehen Sie mit 'require (..., bail)' Anweisungen mit ARC um?

8

Ich schaue mir den Beispielcode für die Square Cam in Apples an Beispielcode . Ich möchte einige Funktionen in einem modernen Projekt mit ARC replizieren. Es gibt jedoch eine Menge von Require-Anweisungen wie:

%Vor%

Was den Compilerfehler erzeugt:

  

Gehe in den geschützten Bereich.

Meine Frage ist - was ist der geeignete Weg, um solche Anweisungen in einem Projekt mit ARC zu behandeln?

    
Jim Jeffers 09.07.2012, 03:43
quelle

3 Antworten

10

Ich hatte das gleiche Problem (mit dem gleichen Beispielcode). Der Code sah so aus:

%Vor%

Ich habe Klammern um den Block mit den Deklarationen hinzugefügt, um deren Gültigkeitsbereich zu verdeutlichen:

%Vor%

Und es hat das Problem für mich gelöst. Wenn ich mir das anschaue, habe ich auch gelernt, dass man Buildfehler manchmal erweitern kann, um mehr Details zu erhalten.

    
Lewis42 02.11.2012, 03:30
quelle
3

Anscheinend liegt bail in einem Bereich mit einer oder mehreren __block Variablen; Das ist nicht erlaubt. Weitere Informationen finden Sie Ссылка . Die vorgeschlagene Lösung besteht darin, den Umfang der Variablen __block zu begrenzen, indem sie in durch Trennzeichen getrennte Blöcke gesetzt werden. Dies funktioniert möglicherweise nicht immer. YMMV.

    
echristopherson 09.07.2012 04:04
quelle
0

Ich füge eine Beschreibung für die @ Lewis42-Antwort hinzu.

Wenn Sie die Variable nicht in ihren eigenen Geltungsbereich setzen, umgehen Sie die Initialisierung aller Variablen nach dem Goto-Befehl, und wenn ARC versucht, sie zu bereinigen, wird am Ende versucht, ein zufälliges Stück Speicher freizugeben.

>

Wenn Sie Variablen nicht in ihren eigenen Geltungsbereich setzen möchten, stellen Sie sicher, dass keine Variable unter goto keyword deklariert werden sollte.

Springt in den Bereich der Variablen __block

  

__ block erfordert spezielle Runtime-Initialisierung. Ein Sprung in den Gültigkeitsbereich einer __block-Variablen umgeht diese Initialisierung und lässt die   Metadaten der Variablen in einem ungültigen Zustand.

    
Parag Bafna 24.03.2015 06:45
quelle