【问题标题】:Weak Linking Foundation and UIKit?弱链接基础和 UIKit?
【发布时间】:2011-01-07 06:24:32
【问题描述】:

我最近介绍了通过 AirPrint 进行打印,但不想放弃对 4.2 之前版本的支持(显然)。之前为 Game Center 之类的东西做过。在这种情况下我发现特别奇怪的是我不得不弱链接 UIKit。打印不包含在它自己的框架中,这让我可以更细化。

这只是感觉不对,尽管它解决了我的问题,允许应用程序在所有版本上正常运行。

他们在Apple's SDK Compatibility Guide 中声明:

当使用的框架是 在您的部署目标中可用, 你应该需要那个框架(和 不要弱链接它)。

UIKit可用的,只是没有UIPrintInfoUIPrintInteractionController等类。

弱链接这样一个核心框架似乎很奇怪,我说得对吗?有没有更好的办法?

【问题讨论】:

  • 你找到答案了吗?如果您尚未声明类的类型并首先对其进行测试,则使用 NS_CLASS_AVAILABLE 似乎很好。解决了这两个链接:goo.gl/6yH4Ugoo.gl/FiOd9 我还没有找到合适的解决方案。

标签: iphone weak-linking


【解决方案1】:

有更好的方法。 iOS 4.2 为此目的引入了 NS_CLASS_AVAILABLE,但使用它有一些限制。所有详细信息都列在下面链接的文档中:

http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/cross_development/Using/using.html

【讨论】:

  • 为了更具体:在运行时使用 [UIPrintInfo 类] 进行测试,如果返回 nil,则表明您使用的是旧系统,应该跳过/禁用打印功能。
  • @Steven Kramer:我也有同样的问题。我使用 -(BOOL)canPrint { BOOL 结果 = NO;类 printClass = (NSClassFromString(@"UIPrintInteractionController")); if (printClass != nil) { result = [UIPrintInteractionController isPrintingAvailable]; } 返回结果; }。然后我测试 [self print] 以启用/禁用打印功能,但它不起作用。我用 ios 3.1.3 在 ipod touch 上试过。我也尝试了 NSClassFromString(@"UIPrintInfo"),但没有。你有什么建议吗?
  • “不起作用”是什么意思?链接错误?动态链接错误?或者测试只是返回NO,它应该返回YES,反之亦然?
  • 您是否完成了该文档中列出的所有构建设置配置,例如要使用的编译器等?
  • Fran,标准的GCC根本不支持弱链接,就这么简单!编译器需要专门将一些符号标记为弱链接,标准 GCC 不会这样做。祝你的项目好运。
猜你喜欢
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多