2014-07-02 8 views
13

Ich habe ein Xcode-Projekt und läuft auf dem Gerät, Debug-Build alles in Ordnung ist.Swift-Projekt erstellt und läuft aber nicht archivieren

aber wenn ich versuche, das Projekt im zu archivieren eine segfault vom Swift Compiler bekommen:

0 swift     0x0000000105c36608 llvm::sys::PrintStackTrace(__sFILE*) + 40 
1 swift     0x0000000105c36af4 SignalHandler(int) + 452 
2 libsystem_platform.dylib 0x00007fff852705aa _sigtramp + 26 
3 libsystem_platform.dylib 0x0000000000000002 _sigtramp + 2061040242 
4 swift     0x0000000105f51896   swift::TypeBase::getTypeOfMember(swift::Module*, swift::ValueDecl const*, swift::LazyResolver*, swift::Type) + 534 
5 swift     0x00000001050eee38 swift::SILType::getFieldType(swift::VarDecl*, swift::SILModule&) const + 56 
6 swift     0x00000001051a1252 (anonymous namespace)::SILSROA::run() + 3602 
7 swift     0x000000010516b116 swift::SILPassManager::runFunctionPasses(llvm::ArrayRef<swift::SILFunctionTransform*>) + 310 
8 swift     0x000000010516b6f9 swift::SILPassManager::runOneIteration() + 761 
9 swift     0x000000010516b92b swift::SILPassManager::run() + 251 
10 swift     0x000000010516afbc swift::runSILOptimizationPasses(swift::SILModule&, swift::SILOptions const&) + 1644 
11 swift     0x0000000104ffb141 frontend_main(llvm::ArrayRef<char const*>, char const*, void*) + 3537 
12 swift     0x0000000104ffa35d main + 1533 
13 libdyld.dylib   0x00007fff885d75fd start + 1 
14 libdyld.dylib   0x0000000000000052 start + 2007140950 

Ich habe Leute über bestimmte Synta sprechen gesehen, dass diese Art von Fehler kann dazu führen, aber nicht jeder wissen, wie man Versuchen Sie herauszufinden, welche Bits des Codes den segfault verursachen.

+1

Hallo. Haben Sie jemals herausgefunden, was das Problem verursacht hat? –

+0

Nein eigentlich habe ich meine schnelle Entwicklung in die Warteschleife gestellt, sorry –

+0

@JozefDransfield könntest du bitte überprüfen, ob meine Lösung für dich funktioniert hat? – deathhorse

Antwort

32

Ich hatte ein ähnliches Problem und die "Lösung" war, Swift Compiler-Code-Generierung Optimierungsebene -Onone in Build-Einstellungen für die Release-Konfiguration. Dies ist ab Xcode 6.0.1. Turning off swift compiler optimization

+1

Ich hatte genau das Problem oben und das hat es behoben. würde gerne wissen, was die Ursache ist. –

+0

Ich habe den Fehler gefunden, bevor ich diese Antwort fand (leider) und ja, es war definitiv die Optimierungsstufe für den Release-Build (Archiv). Keine funktioniert gut. ;-) –

+0

Mann, du bist großartig. Ich habe Stunden damit verschwendet. Danke vielmals! –

0

Ich hatte dieses Problem auch und ich habe herausgefunden, dass bestimmte Konstrukte im Code Compiler Crash verursachen scheinen.

Einer der Konstrukte ist, wenn Sie zu viel verwenden [weak self] s wie folgt aus:

whatever { [weak self] in 
    whatever2 { [weak self] in 
    } 
} 

Die zweite [weak self] nicht erforderlich ist, und bewirkt, dass Compiler zum Absturz bringen.

3

vor der Senkung der Optimierungsstufe (das ist definitiv keine Möglichkeit, Kompilierungsprobleme zu lösen, es sei denn, Sie verwenden einige ziemlich nette Low-Level-Zeug oder einige Spezialitäten).

Schauen Sie einfach, was der Compiler versucht, Ihnen zu sagen - yeap. Es ist noch kein für Menschen lesbares Protokoll. Aber Sie können lesen, nicht wahr? :)

Ich habe ein Problem wie folgt.

While running pass #1059521 SILFunctionTransform "Constant Propagation" on SILFunction "@_TTSg5VSC29UIApplicationLaunchOptionsKeyS_s8Hashable5UIKit_P__CSo8NSObjectS2_S0_10ObjectiveC_Ps9AnyObject____TFs17_dictionaryUpCastu2_Rxs8Hashable0_S_rFGVs10Dictionaryxq__GS0_q0_q1__". 

Wenn Sie an diesem Schlamassel genau hinsehen werden, werden Sie feststellen, dass Sie eine Art Upcasting tun, erlaubt das ist nicht.

Was bedeutet das? Schauen Sie in Ihre Funktion

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) 

und einen Platz finden, wo Sie launchOptions als [NSObject : AnyObject]? werfen

In swift 3 es in [UIApplicationLaunchOptionsKey: Any]? verändert hat. Entfernen Sie diesen Cast und aktualisieren Sie Ihren Code, der launchOptions als [NSObject : AnyObject]? erwartet.

Wenn das hilft, schalten Sie einfach die erstaunliche swift gesamte Modul Optimierung zurück + falls Sie haben keine Ahnung, was ganze Modul-Optimierung ist -> lesen Sie diesen Artikel:

https://swift.org/blog/whole-module-optimizations/

+0

Ihre Analyse war erstaunlich. Zum Glück gibt es hier Profis wie Sie und nicht nur Schnellkorrekturen. Hoch geschätzt! – SalvoC

+0

froh zu helfen;) – deathhorse

-1

Auf ein Projekt von einer anderen Entwicklungsfirma geerbt, haben wir den gleichen Fehler konfrontiert. Uns ist aufgefallen, dass einige benutzerdefinierte Build-Einstellungen für der Swift-Sprachversion und C++ Sprache Dialekt (in der Apple LLVM-Abschnitt). Hier ist, was wir getan haben, um zu beheben:

  • Swift-Version auf den Standardwert (es war 2.3 vor)
  • zurücksetzen alle zugehörigen Optionen an den C++ Dialekt
  • Aktualisiert die Schoten mit pod update und fixiert einige neue Warnungen

Wir waren dann in der Lage zu erstellen und das Projekt zu archivieren.

Auch wenn Sie das Gerät so einzustellen Generisches iOS-Gerät, ist es wichtig, die Schritte in dieser Reihenfolge folgen:

  • Artikel »Saubere
  • Artikel» Bauen
  • Artikel »Archiv
Verwandte Themen