ios - 了解iOS应用程序打包了哪些库

标签 ios sdk ios7

上下文

我的应用程序在Xcode 5.0的iOS 7模拟器中的外观

我预览了一个在Xcode 5.0中为iOS 5.1构建的应用程序,并在iOS 7模拟器中运行了该应用程序。一堆东​​西变了/“看起来很奇怪”。

例子:

  • 我正在使用UINavigationController,并使用以下命令将其navigationBar颜色设置为黑色:self.navigationController.navigationBar.tintColor = [UIColor blackColor],但是当我在模拟器中运行它时,导航栏现在是半透明的灰色
  • 我在主屏幕上有许多按钮,在iOS 6中,这些按钮已被导航栏按下,在iOS 7中则不是这种情况,它们被移至屏幕上方并位于导航栏的后面。

  • 这份名单可以继续使用。我意识到这是因为使用“核心”框架库(例如UINavigationController)对iOS 7进行了更新。

    我的应用程序在运行iOS 7 beta的iPod touch(第5代)上运行时的外观

    当我在iPod touch上运行相同的应用程序时(但是,在这种情况下,该应用程序是从应用程序商店下载的,并且已针对iOS 5发行),它的外观与在iOS 6中的外观几乎相同,导航栏为黑色,这些按钮位于主屏幕上的“正确位置”等。

    问题

    我假设当应用程序使用导航对象(例如UINavigationController)时,它看起来是在设备上找到该库,而不是将该库打包在应用程序中?我想事实并非如此。有人可以向我解释设备上可以访问哪些库以及与应用程序一起预打包的库,并可以更深入地解释上述内容的机制。

    我的理解是,在Xcode中预览应用程序时,Xcode将iOS 7库与我的应用程序捆绑在一起,因此发生了相当大的变化。当我由于使用 public 版本的应用程序而在iPod touch上预览该应用程序时,该应用程序与iOS 5/6库捆绑在一起,因此外观相同。

    最佳答案

    这里的问题是,Apple在用户升级其操作系统时要谨慎一些,以确保现有已发布的应用程序不会中断,因此运行时库会检查您的应用程序所使用的SDK版本,并根据其行为对其进行修改。关于该信息。他们基于最新的SDK构建,因此不考虑向后兼容性,因为他们希望您更新应用程序。

    这些库未与您的应用捆绑在一起。它们与OS打包在一起,这使Apple可以选择要普遍更新的行为。得到后向兼容处理;并保持不变。

    关于ios - 了解iOS应用程序打包了哪些库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240791/

    相关文章:

    c++ - 在 iOS 中生成 AcoustID/Chromaprint 声学指纹

    ios - 检索到 "total_count":514 from FB, 只想将 "514"发布到 Parse

    iphone - 无法使用 iOS 4.3.5 设备在 Xcode 4.1 中构建源代码

    android - HAXM在最新的SDK更新后消失了

    iphone - 在 iOS 7 中使用谷歌地图绘制折线?

    ios - 无法保存 AFNetworking responseObject

    ios - UICollectionView ios 7 问题

    ios - 在 iOS 上捕获崩溃日志

    iphone - 如果应用程序意外关闭,如何重新启动应用程序

    ios - 尝试验证 iOS 应用程序时出错 : iPhone/ipod info. plist : Unable to verify icon dimensions, 未找到图标。您必须定义 CFBundleIcons