iOS 8+框架,嵌套嵌入式框架

dud*_*ror 12 frameworks ios swift alamofire

我创建了一个自定义iOS框架LoginKit.它反过来将Alamofire框架嵌入其中.在模拟器中,一切正常,但在尝试在设备上运行时,我收到错误:

Dyld错误消息:

  Library not loaded: @rpath/Alamofire.framework/Alamofire
  Referenced from: /Users/USER/Library/Developer/CoreSimulator/Devices/506B47DE-804F-477F-AA90-69DF039E07FA/data/Containers/Bundle/Application/26D0CA8F-7284-42B5-8091-E5915736DCDB/Bingo.app/Bingo
  Reason: image not found 
Run Code Online (Sandbox Code Playgroud)

在父应用程序中,在嵌入式二进制文件部分中,我只有LoginKit.framework.现在,如果我还嵌入了Alamofire.framework(取自LoginKit下面),那么错误就会消失.这种行为有望吗?它不会破坏封装的整个目的吗?

sun*_*nce 3

您尝试创建的内容称为伞框架。通过一些技巧和自定义 bash 脚本的使用,您可以创建这样一个具有嵌套框架的框架,如此处所述

然而,苹果公司非常不鼓励创建伞式框架,因为这种方法可能会产生各种奇怪的运行时和/或链接错误。此外,很明显,如果您的应用程序包含多个嵌入相同框架的框架,甚至不同版本中的相同框架,您的应用程序将变得更大且更难以维护。可以在这里找到这些问题的详细解释。

目前,包含框架的框架仍然是应用程序开发中的一个大问题,因为苹果没有提供良好的框架处理。在这个问题最终解决之前,我强烈建议将所有框架和子框架直接嵌入到应用程序中。