【问题标题】:Checking for Presence of Objective-C Framework检查是否存在 Objective-C 框架
【发布时间】:2011-10-09 14:28:48
【问题描述】:

如果您愿意,我现在正在创建一个可以与 CoreData 一起使用的框架。该框架还具有 CoreData 之外的功能。如何将所有 CoreData 特定代码包装在 IfDef 中,检查 CoreData 框架是否可用?

【问题讨论】:

  • 所以您希望您的库在编译时而不是运行时做出使用 CoreData 的决定?这意味着如果您分发一个库文件,您将拥有多个版本,并且如果您编译代码,您必须记住在构建设置中设置定义或在构建过程中尽早设置。
  • #ifdef _COREDATADEFINES_H 怎么样?
  • 听起来正好相反 - 他想在运行时决定是否使用 Core Data(基于其可用性和用户确认)。
  • 我担心我可能不得不发布两个独立的框架。现在我用包含的 NSManagedOjectContext 类别编译它,当我将它包含到项目中时,除非我包含核心数据框架,否则会出现编译器错误。如果包含 CoreData,我想发布一个包含 NSManagedObjectContext 类别的 .framework,如果不包含则不发布。不幸的是,由于框架是预编译的,我担心我可能不得不发布两个不同的框架。

标签: objective-c ios core-data conditional-compilation ios-frameworks


【解决方案1】:

您想要做的是使用weak link 到CoreData 基础。完成后,您可以使用runtime checks 确保CoreData 可用。常量变量在运行时也可以是checked for existence。如果您要使用预处理器 (#if#ifdef) 检查,那么每个版本都会有两个单独的框架版本来分发。

【讨论】:

    猜你喜欢
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 2014-01-13
    • 2013-03-16
    • 2011-11-24
    • 1970-01-01
    • 2011-08-31
    相关资源
    最近更新 更多