【问题标题】:Can a framework cocoapod have an optional public header?框架 cocoapod 可以有一个可选的公共标头吗?
【发布时间】:2016-02-12 14:42:29
【问题描述】:

所以我想我已经很清楚了,基于this blog post 和我的实验:

  • @import MyPod; 包含的是自动生成的 MyPod-umbrella.h 标头,它根据 Podspec 导入所有公共标头
  • 自动生成的模块映射还允许显式导入那些并且只允许那些相同的公共标头
  • #import <MyPod/MyPod.h> 标头包含的内容是我仍需要制作的 MyPod.h 标头,但它可以导入我在模块映射中选择的任何内容

然而,我希望实现的是 @import#import 的标头包含大部分但不是全部我的 pod 的公共标头。我希望我的公共标头之一包含通常被省略的可选声明,只能从需要它的少数 .m 文件中手动包含。但是,当代码使用 @import 时似乎不可能,因为该伞形标头中的包含始终与 all 公共标头匹配。

指定自定义模块映射是可能的并且会起作用,但这样做似乎排除了自动生成的映射和伞形标题的好处。

做一些宏和#ifdef技巧来跳过@import中包含的“可选”标头的内容,但如果该标头被#include再次拉入,则使用这些内容是否合理? ?这听起来很难看,但这是我唯一的选择吗?

【问题讨论】:

    标签: objective-c xcode cocoa cocoapods


    【解决方案1】:

    我发现我在使用框架 cocoapods 时尝试的所有 #ifdef 技巧都有问题,但我确信它们在不使用时会起作用。但我真的不想对框架有偏见,我希望两者都有解决方案。

    因此,采用另一种方法,我发现项目访问 pod 的私有标头并不难!请参阅 herehere(最后一个提示是针对 Swift 的,但我确信正确的 @import 也适用于 Objective-C)。

    因此,在我的 cocoapod 中,我将把可选标头设为私有,然后依赖我的用户使用这些方法来访问它(如果需要)。

    【讨论】:

      猜你喜欢
      • 2017-05-24
      • 2022-10-14
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 2011-03-31
      • 2014-05-13
      相关资源
      最近更新 更多