有人问我一个问题,如果从您的设备中意外删除框架可能是 iphone 或 mac 会发生什么?
您的应用程序是否崩溃或它会正常工作而没有任何错误?
请给我答案和解释。
有人问我一个问题,如果从您的设备中意外删除框架可能是 iphone 或 mac 会发生什么?
您的应用程序是否崩溃或它会正常工作而没有任何错误?
请给我答案和解释。
您可能会收到链接错误。如果框架文件夹在应用程序内部,则意味着它的运行时链接。
OS X 在每个动态库中嵌入了一个“安装名称”。此安装名称是 dyld 需要加载库时可以找到的路径。当您构建链接到动态库的应用程序时,此安装名称将复制到应用程序二进制文件中。当应用程序运行时,复制的安装名称将用于定位库或框架。
$ otool -D /Applications/Google\ Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python
/Applications/Google Drive.app/Contents/Frameworks/Python.framework/Versions/2.6/Python:
@executable_path/../Frameworks/Python.framework/Versions/2.6/Python
因此,如果您删除 Frameworks 文件夹,您将收到 Dyld 错误。
Dyld Error Message:
Library not loaded: @loader_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle
Referenced from: /Applications/Transmission.app/Contents/MacOS/Transmission
Reason: image not found
如果删除框架,则只有链接到该框架的软件会受到影响。如果它是一个系统框架,预计您的系统会开始失败。如果是第 3 方框架,则应限制影响范围。如果它在您的应用程序包中,并且您的应用程序是代码签名的,那么删除捆绑的框架应该会阻止您的应用程序启动。
这取决于应用程序是否需要访问您已删除的框架。如果您的应用程序需要该框架,那么它将无法编译。如果你不需要它,它会像平常一样编译。