2016-05-22 4 views
0

Meine App friert nur in Release-Konfiguration.
verfolgen ich das Problem auf diese Einstellung nach unten:Swift Compiler-Optimierungen verursachen Freezes

enter image description here

Es ist kein Geheimnis, dass die Swift-Compiler Buggy ist. Ich habe noch nie gesehen, dass ein Compiler abstürzt (und oft abstürzt).

Also ist es "sicher", den App Store mit Optimierungslevel auf "None" einzustellen?
Irgendwelche Erfahrungen?

Antwort

1

Apple empfiehlt nicht, Ihre Anwendung ohne Compileroptimierungen zu versenden. [1]

None: Der Compiler versucht nicht, Code zu optimieren. Verwenden Sie diese Option während der Entwicklung, wenn Sie sich auf das Lösen logischer Fehler konzentrieren und eine schnelle Kompilierzeit benötigen. Verwenden Sie diese Option nicht zum Versenden Ihrer ausführbaren Datei .

Aus apple.developer.com übernommen.

Während Compiler-Optimierung Fehler existieren, [2] Xcode ist wahrscheinlich nicht die Ursache des Problems, wie in der Antwort erklärt versehen here durch die Stackoverflow user @ kfmfe04:

In einigen extrem seltenen Fällen die Debug-Code funktioniert, aber der Release-Code schlägt fehl. Wenn das passiert, ist fast immer das Problem in meinem Code; aggressive Optimierung in Version baut Bugs durch Fehl verstanden Lebensdauer von Provisorien verursacht wird, kann offenbaren, etc ...


Denken Sie daran, dass Sie immer die Quelle des Problems aufzuspüren können die kompilierte Assembly-Datei durch die Prüfung, aber es wird etwas ASM-Wissen erfordern, um zu verstehen, was der Compiler unter der Haube tut.

In Xcode Optionen:

Debug -> Debug Workflow -> Always Show Disassembly

Dann legen Sie einen Haltepunkt, wo Sie die ASM-Code überprüfen möchten.

+0

Allerdings empfiehlt Apple auch, Apps zu verschicken, die nicht einfrieren. –

+0

Sie haben gefragt, was "sicher" zu tun ist. Wenn Sie Ihre Anwendung ohne Compileroptimierungen einreichen, wird sie wahrscheinlich abgelehnt. –

+0

Ich frage, ob jemand Erfahrung mit dem Einreichen eines Builds ohne Optimierungen hatte. Dies könnte meine einzige Option sein, wenn ich die Ursache des Problems nicht finde. Und die Quelle des Problems liegt wahrscheinlich in einer Bibliothek, die ich benutze. –

Verwandte Themen