AVCaptureSession Die stopRunning-Methode erzeugt einen schrecklichen Hang

8

Ray Wenderlichs QRCode-Reader aus Kapitel 22 der iOS7-Tutorials , ich lese erfolgreich QRCodes für meine aktuelle App. Ich erweitere es nun, dass ich nach dem erfolgreichen Lesen eines QRCodes das stringValue des gelesenen AVMetadataMachineReadableCodeObject speichern, in eine neue Ansicht wechseln und diese Daten in der neuen Ansicht verwenden möchte, mehr oder weniger genau wie die meisten QRCode Reader Apps (wie RedLaser , etc ...) verarbeiten Barcodes und QRCodes.

Allerdings rufe ich [captureSession stopRunning] auf (damit es keine QRCodes mehr liest und zusätzliche Segmente auslöst) und es gibt einen 10+ zweiten Hang. Ich habe versucht, einen async Aufruf pro diese SO Frage , jedoch ohne Erfolg. Ich habe auch diese SO Fragen und sie scheinen nicht für diesen Zweck geeignet.

Hat jemand eine Idee, wie man dieses Hängen entfernen kann?

Hier ist der Code:

%Vor%     
Max 22.10.2013, 18:02
quelle

1 Antwort

15

Ich habe das Problem sukzessive gelöst. Das Problem war, dass der Delegate-Methodenaufruf

%Vor%

läuft im Hintergrund. Dies wurde mit einem [NSThread isMainThread] -Aufruf festgestellt, was fehlschlägt.

Die Lösung besteht darin, den richtigen stringValue vom QRCode zu finden, Ihre captureSession im Hintergrund zu stoppen, DANN rufen Sie Ihr Segment im Hauptthread auf. Die Lösung sieht so aus:

%Vor%     
Max 24.10.2013, 19:27
quelle