【问题标题】:NSBundle.allFrameworks doesn't return some of the frameworksNSBundle.allFrameworks 不返回某些框架
【发布时间】:2019-10-26 01:25:03
【问题描述】:

我们正在使用 Objective-C 开发一个 SDK,作为我们为我们的 SDK 消费者提供服务的一部分,我们有一个工具可以检查开发项目中是否存在所有必需的框架。 为了让我们这样做,我们使用应该返回所有框架的 NSBundle.allFrameworks,并在返回的结果中搜索所需的框架。

我们看到该调用在操作系统版本之间发生变化的奇怪行为。 例如,当我们在 iOS 上调用 NSBundle.allFrameworks 时,返回的列表不包含一些框架,例如 MobileCoreServices、CoreGraphics、UIKit、SystemConfiguration

如果我们在 iOS 11 设备上运行相同的调用,唯一缺少的框架是 SystemConfiguration

有人熟悉这种行为吗? 我们真的很乐意为我们的用户提供该功能

【问题讨论】:

    标签: ios objective-c frameworks ios11 ios12


    【解决方案1】:

    根据docs,返回:

    代表框架的所有应用程序包的数组。仅包含具有一个或多个 Objective-C 类的框架。

    讨论部分提到:

    返回的数组包括在构建应用程序时链接到应用程序的框架以及动态创建的框架的捆绑包。

    这意味着显示了具有至少一个 Objective-C 类并且捆绑在应用程序中/链接到应用程序的框架。

    例如如果应用程序和捆绑的框架都没有链接到特定框架,则它不会出现在列表中。

    【讨论】:

    • 感谢 Matteo 我也阅读了文档并看到了这些定义。奇怪的是,我们创建了一个测试应用程序,以便我们测试我们的 SDK。当我将带有 OS 12 的 iPhone 连接到我的 Mac 并编译这个应用程序时,我得到一组框架,当我将它连接到另一台运行 OS 11 的设备时,我得到一组不同的框架。我没有更改两个编译之间的框架定义。这就是为什么我想知道是否有人知道这些框架被排除在框架列表之外的原因。
    • @Roi 很可能是不同的iOS 版本,在框架链接方面有不同的要求
    猜你喜欢
    • 2018-06-09
    • 2021-03-06
    • 2019-04-09
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多