上下文
我的应用程序在Xcode 5.0的iOS 7模拟器中的外观
我预览了一个在Xcode 5.0中为iOS 5.1构建的应用程序,并在iOS 7模拟器中运行了该应用程序。一堆东西变了/“看起来很奇怪”。
例子:
UINavigationController
,并使用以下命令将其navigationBar
颜色设置为黑色:self.navigationController.navigationBar.tintColor = [UIColor blackColor]
,但是当我在模拟器中运行它时,导航栏现在是半透明的灰色这份名单可以继续使用。我意识到这是因为使用“核心”框架库(例如
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/