【问题标题】:#ifdef doesn't seem to work with my framework#ifdef 似乎不适用于我的框架
【发布时间】:2015-01-13 11:03:41
【问题描述】:

我有一个使用其他两个框架的框架,所有这些都是我自己制作的。

其中一个使用的框架有几个带有#ifdef NEED_THIS_CLASS #endif 的类,它的.pch 文件中有一个#define NEED_THIS_CLASS。

这样做的原因是我的大多数应用程序都使用该框架,但是如果包含这些作为框架一部分的类,则如果不使用这些类,则可以在应用商店中拒绝它。因此,当我不需要它时,我会对#define 进行注释,并在需要时使用它,这没有问题。

现在的问题是我想在另一个需要使用这些类的框架中使用它,它似乎无法找到这些类。就好像#define NEED_THIS_CLASS 不存在一样。

我可以通过删除类周围的#ifdef #endif 来修复它,因此某些引用似乎没有问题。如果#ifdef 不存在,它可以找到它,并且我可以很好地使用框架中的所有其他类。但是,如果我需要/不需要这些类,只需在一个地方而不是 6 个地方更改它会更方便。

有没有人在框架内的框架中使用#ifdef #endif 的经验,可以解决我的问题?任何帮助将不胜感激:)

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    必须使用该选项编译框架,因为它只是一个美化的共享库。一旦您将框架添加到项目中,它就已经完成编译,无论您的编译时间设置和开关是什么,它们都不会影响已经为框架生成的二进制文件。

    【讨论】:

    • 但是我将使用框架的框架项目添加到框架中,所以我可以将框架项目的产品用作链接框架和库,所以当我尝试构建我的框架时,它会构建再次使用当前设置的框架。至少我认为它是这样工作的:)
    • @Hafax 啊,我明白了。但是,在这种情况下,您的框架不会使用您的项目前缀标头构建,而是使用它自己的或不使用。在这种情况下,通过编译器使其成为全局定义。
    • 似乎根本没有使用前缀标头。如果我将它作为预处理器宏添加到框架构建设置中,它会起作用,但我希望它可以与使用的框架的前缀标头一起使用。有没有办法强制它使用使用过的框架的前缀头?甚至强制它使用项目自己的前缀头?
    猜你喜欢
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2020-04-04
    • 2023-04-06
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多