2016-07-07 14 views
0

Es hat einige Zeit gedauert, bis ich das Problem gelöst habe, also dachte ich, wenn jemand danach sucht, könnten sie auch die Lösung finden.iOS Simulator stürzt ab, Gerät nicht (dyld: Symbol nicht gefunden)

Das Problem trat auf, als ich ein Framework namens CoreUI hatte. Das funktionierte auf meinem iPhone und iPad, aber es stürzt auf dem Simulator mit dem folgenden Fehler an das Terminal

dyld: Symbol not found: _OBJC_CLASS_$_CUICatalog 
Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/UIKit 
Expected in: /Users/sareninden/Library/Developer/Xcode/DerivedData/Treinplanner-bcfwuvntuwetsmavibxtvaiczpfg/Build/Products/Debug-iphonesimulator/CoreUI.framework/CoreUI 
in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/UIKit.framework/UIKit 

Nach einem Blick durch die alle Build-Einstellungen und die Suche nach nichts, was ich versuchte, ein leeres Projekt mit einem Rahmen zu machen genannt CoreUI. Ohne irgendeine hinzugefügte Logik stürzte es mit demselben Fehler ab.

Es zeigte sich, dass im Simulator CoreUI auch ein Framework-Name von Apple verwendet wird. Obwohl es sich um einen schnellen, einzigen Rahmen handelt, verursacht dies immer noch Konflikte.

Antwort

1

Die Lösung besteht darin, keine von Apple verwendeten Modulnamen (für Ihre App oder Ihr Framework) zu verwenden. Ich habe hier eine Liste von Frameworks gefunden (https://github.com/jonathanpenn/ui-auto-monkey/issues/8). Ich weiß nicht, ob es komplett ist, aber es ist ein guter Anfang.

1

So funktioniert DYLD_FRAMEWORK_PATH. Da Sie in Ihrem DYLD_FRAMEWORK_PATH ein eigenes CoreUI.framework haben, wird dieses System anstelle des Systemsystems verwendet, um die Verknüpfung von UIKit.framework zu erfüllen.

Nicht Rahmen Namen auswählen, die von dem Systemrahmen verwendet werden, das heißt:

ls $ (xcrun --sdk iphonesimulator --show-sdk-Pfad)/System/Library/* Frameworks