【问题标题】:Only weak link the frameworks which is not available in deployment target?只有弱链接部署目标中不可用的框架?
【发布时间】:2014-06-05 08:23:45
【问题描述】:

在我的应用中,大多数框架都是弱链接的。当我阅读document 时,我认为也许我不需要弱链接这些框架。

我的应用程序的设置

我的应用部署目标是iOS4.3,基础SDK是iOS7.1。

我的想法

在我的应用程序中,我使用CIImageUICollectionViewCIImageCoreImage 框架中,iOS5.0 之后可用,所以我应该弱链接CoreImage 框架。 UICollectionView在iOS6.0的UIKit框架中可用,而UIKit在iOS4.3可用,所以我不需要弱链接UIKit框架。

我说的对吗?

【问题讨论】:

  • 为什么你的部署目标是iOS 4?...
  • @LordZsolt 好吧,我不想支持 iOS4.x,但我的雇主想支持它。
  • 您应该告诉您的雇主,超过 93% 的设备都装有 iOS7。其余设备要么是 Apple 不提供支持的设备(任何 iPhone 4 或更低版本),要么属于只使用手机打电话的老年人。现在 iOS8 处于测试阶段,没有理由提供对 iOS5 或更低版本的支持。而且一旦 iOS8 出来了,即使提供对 iOS6 的支持也将是浪费时间。
  • @LordZsolt 我同意你的看法,谢谢。

标签: ios frameworks weak-linking


【解决方案1】:

如果您使用CoreImage 并且没有编写任何防御性代码来解释可能不存在的框架,则应始终硬链接该框架。但是,由于CoreImage 仅在iOS 5 及更高版本中可用,如果您希望您的应用程序在 iOS 4.3 上运行,您必须弱链接框架。但是,您确实需要编写检查的防御性代码以确保该类在运行时存在,或者当应用程序在 iOS 4.3 上运行时根本不调用 CoreImage 方法。

话虽如此,您确实不需要支持 iOS 4.x。 iOD 市场升级很快。因此,花精力支持 4.x 可能不值得。

【讨论】:

  • 在我的情况下 UIKit 怎么样,我使用的是 iOS6.0 中可用的UICollectionView,我应该硬链接 UIKit 吗?我已经编写了防御性代码,以确保 UICollectionView 在使用之前可用。
  • @KudoCC 由于 UIKit 从一开始就存在,您可以安全地硬链接它。但是,正如您已经指出的那样,并非所有方法都适用于所有版本的操作系统,因此您必须检查该方法是否存在。对于框架,只有当您打算支持的旧操作系统版本完全没有框架时,您才应该考虑对它们进行弱链接。如果您打算支持 iOS 4.x,CoreImage 就是一个例子。
猜你喜欢
  • 2011-02-07
  • 2022-08-03
  • 1970-01-01
  • 2019-04-20
  • 2019-01-17
  • 1970-01-01
  • 2013-05-31
  • 2011-09-22
  • 2016-09-17
相关资源
最近更新 更多