DCAvailability 0.2.4

DCAvailability 0.2.4

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2017年9月

David Clark维护。



  • 作者:
  • David Clark

修改可用性宏,使得在开发目标之后引入的 API 会导致弃用警告。

此类库将被弱链接(这是旧宏和可用性属性的常规行为)。

用法

将您的预编译头文件更改为导入 DCAvailability.h 而不是 Availability.h

#import <DCAvailability.h>

注意:启用模块时操作不会像这样简单(见下文)

如果您在运行时处理此类调用,例如使用 respondsToSelector,则可以忽略警告,如下所示:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    if([something respondsToSelector:@selector(doSomething)]) {
        [something doSomething];
    }
#pragma clang diagnostic pop

模块

当启用模块时,每当导入框架时都会自动添加框架,并且无论您导入多少次,代码都只编译一次。这意味着我们无法重新定义所需的宏。嗯,您可以为您的代码重新定义它们,但是在您重新定义宏之前,模块已经编译了。实际上,这被特别指出作为优点——模块不受本地宏重新定义的影响。

您必须禁用模块才能使 DCAvailability 工作正常。

然而,并非一切都会丢失

仍然相对简单,也就是说,在构建时不会自动执行检查,但它仍然提供了一个方案,让您可以不时手动选择执行检查——比没有好。

如何在使用模块启用的情况下使用 DCAvailability

  • 复制您的 Debug 配置,将其命名为 Availability
  • 复制您的应用程序目标,将其命名为 Availability,使用相同的 Info.plist 文件(有多个目标?请全部复制)
  • 创建一个名为 Availability 的方案,该方案使用 Availability 配置构建 Availability 目标(可能会在您添加新目标时自动创建)
  • 创建一个名为 Availability 的组
  • 添加一个前缀头文件(将其放入组中以便保持整齐)
  • 在 pch 文件中添加 #import <DCAvailability.h>
  • 编辑配置以禁用模块、使用前缀头文件、预编译前缀头文件
  • 将您使用的任何框架添加到 Availability 目标(将其放入组中以保持整齐)

现在,当您想要检查是否未使用可能在运行时不可用的任何内容时,构建 Availability 方案。

此方法的问题

您不能使用 @import。我认为这应该不是一个问题,因为在您启用模块时(所有其他配置),任何 #import 声明都会自动转换为 @import

当您有自定义配置时,可能会与 cocoapods 出现问题。例如,CocoaPods 没有设置您项目的基配置,因为您的项目已经设置了自定义配置。 呃。看起来如果您先添加自定义配置,然后添加其他 pod 进行 pod install,您可能会得到这条信息,但它仍然可以正常工作。尝试向已安装 working pods 的项目添加自定义配置会导致各种问题,阻止其正确链接。可能遗漏了一些东西,但由于我对 CocoaPods 的理解不够深入,我不知道它尝试做什么。

作者

David Clark, [email protected]

许可证

DCA Availability 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。