Es ist ein Laufzeitfehler, der durch verursacht wird Dynamic Linker
dyld: Library not loaded: @rpath/...
...
Reason: image not found
Der Fehler Library not loadedmit @rpathzeigt an, dass Dynamic Linkerdie Binärdatei nicht gefunden werden kann.
Überprüfen Sie, ob das dynamische Framework hinzugefügt wurde General -> Embedded Binaries
 
Überprüfen Sie das @rpathSetup zwischen Consumer (Anwendung) und Producer (Dynamic Framework):
- Dynamisches Framework: 
Build Settings -> Dynamic Library Install Name 
 
- Anwendung: 
Build Settings -> Runpath Search Paths  
Build Phases -> Embed Frameworks -> Destination, Subpath 
 
 
Dynamischer Linker
Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME)Dies wird von loadable bundle( Dynamic frameworkals Ableitung) verwendet, wo dyldins Spiel kommt 
Dynamic Library Install Name- Pfad zur Binärdatei (nicht .framework). Ja, sie haben die gleichen Namen, aber MyFramework.frameworkein packaged bundlemit MyFrameworkBinär - Datei und Ressourcen im Innern. 
Dieser Pfad zum Verzeichnis kann absolut oder relativ sein (zB @executable_path, @loader_path, @rpath). Der relative Pfad ist vorzuziehen, da er zusammen mit einem Anker geändert wird, der nützlich ist, wenn Sie Ihr Bundle als einzelnes Verzeichnis verteilen

absoluter Pfad - Framework1 Beispiel
//Framework1 Dynamic Library Install Name
/some_path/Framework1.framework/subfolder1
@executable_path 
@executable_path - relativ zum Eintrag binär - Framework2- Beispielanwendungsfall 
: Einbetten eines Dynamic frameworkin eine Anwendung
//Application bundle(`.app` package) absolute path
/some_path/Application.аpp
//Application binary absolute path 
/some_path/Application.аpp/subfolder1
//Framework2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1
//Framework2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1
//Framework2 Dynamic Library Install Name 
@executable_path/../Frameworks/Framework2.framework/subfolder1
//Framework2 binary resolved absolute path by dyld
/some_path/Application.аpp/subfolder1/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1
@loader_path 
@loader_path - relativ zum Bundle, das Eigentümer dieses binären 
 
Anwendungsfalls ist: Framework mit eingebettetem Framework - Framework3_1 mit Framework3_2 im Inneren
//Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1
//Framework3_2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1
//Framework3_1 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1
//Framework3_1 @loader_path == Framework3_1 @executable_path
/some_path/Application.аpp/subfolder1
//Framework3_2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1
//Framework3_2 @loader_path == Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1
//Framework3_2 Dynamic Library Install Name 
@loader_path/../Frameworks/Framework3_2.framework/subfolder1
//Framework3_2 binary resolved absolute path by dyld
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1/../Frameworks/Framework3_2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1
@rpath - Runpath-Suchpfad
Framework2 Beispiel
Zuvor mussten wir ein Framework einrichten, um mit dyld zu arbeiten. Dies ist nicht praktisch, da dasselbe Framework nicht mit unterschiedlichen Konfigurationen verwendet werden kann
@rpath ist ein zusammengesetztes Konzept, das auf äußeren (Anwendung) und verschachtelten (Dynamic Framework) Teilen basiert:
Anwendung:
 
Dynamisches Framework:
 
//Application Runpath Search Paths
@executable_path/../Frameworks
//Framework2 Dynamic Library Install Name
@rpath/Framework2.framework/subfolder1
//Framework2 binary resolved absolute path by dyld
//Framework2 @rpath is replaced by each element of Application Runpath Search Paths
@executable_path/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1
* ../- Wechseln Sie zum übergeordneten Verzeichnis des aktuellen Verzeichnisses
otool - Werkzeug zur Anzeige von Objektdateien
//-L print shared libraries used
//Application otool -L
@rpath/Framework2.framework/subfolder1/Framework2
//Framework2 otool -L
@rpath/Framework2.framework/subfolder1/Framework2
//-l print the load commands
//Application otool -l
LC_LOAD_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2
LC_RPATH
@executable_path/../Frameworks
//Framework2 otool -l
LC_ID_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2
install_name_tool Ändern Sie die Installationsnamen der dynamischen gemeinsam genutzten Bibliothek mithilfe von -rpath
CocoaPodsverwendet use_frameworks![About] , um a zu regulierenDynamic Linker
[Wortschatz]
               
              
Link Binary with Librariesin Ihr App-Bundle kopiert werden können, während dies bei benutzerdefinierten Frameworks einfach nicht der Fall ist.