了解使用iOS应用程序打包的库

时间:2013-08-14 19:39:19

标签: ios sdk ios7

上下文

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

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

示例:

  1. 我使用UINavigationController并使用navigationBar将其self.navigationController.navigationBar.tintColor = [UIColor blackColor]颜色设置为黑色,但是当我在模拟器中运行时,导航栏现在是半透明,灰色的颜色
  2. 我在主屏幕上有许多按钮,在iOS 6中这些按钮被导航栏按下,在iOS 7中情况并非如此,它们在屏幕上移动并位于导航栏后面。 / LI>

    列表可以继续。我意识到这是因为iOS 7更新了"核心"框架库,例如UINavigationController

    我的应用如何在运行iOS 7测试版的iPod touch(第5代)上运行

    当我在iPod touch上运行相同的应用程序时(在这种情况下,该应用程序是从应用程序商店下载的,已经针对iOS 5发布),它看起来与在iOS 6中的应用程序几乎相同,即导航酒吧是黑色的,按钮位于"正确的位置"在主屏幕等。

    问题

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

    我的理解是,在Xcode中预览应用程序时,Xcode会将iOS 7库与我的应用程序捆绑在一起,因此会有相当大的变化。当我在iPod touch上预览应用程序时,因为我使用的是应用程序的公共版本,它与iOS 5/6库捆绑在一起看起来是一样的。

1 个答案:

答案 0 :(得分:4)

这里的问题是Apple试图小心谨慎,当用户升级其操作系统时,现有的已发布的应用程序不会中断,因此运行时库正在检查您的应用程序构建的SDK的哪个版本并进行修改它基于该信息的行为。根据最新的SDK构建,他们不会考虑向后兼容性,因为他们希望您更新应用程序。

这些库未与您的应用捆绑在一起。它们与操作系统打包在一起 - 这使得Apple可以选择普遍更新的行为;获得向后兼容处理;并且没有变化。