ios-ntp 与 Xcode 7 和 swift 2.0

ios-ntp with Xcode 7 and swift 2.0

我正在尝试将 ios-ntp 集成到我使用 Xcode 7、swift 2.0 和 cocoapods 开发的项目中。我正在将库添加为 pod。但是当我尝试将 <ios-ntp/ios-ntp.h> 添加到我的应用程序时-BridigingHeader.h,Xcode 无法识别它。当我尝试简单地导入模块并按 #import ios_ntp 使用它时; Xcode 抱怨他无法构建模块 'ios_ntp'。我做错了吗?

更新。实际上 Xcode 由于错误

无法构建模块

'GCDAsyncUdpSocket.h' file not found

但该框架存在并作为依赖添加到 'ios-ntp' pod 规范中。

您不需要 #import 桥接 header 中的库,Cocoapods 应该负责让您的 pods 在 [=32= 中可用].

在您的 Swift 文件中,您是否尝试过 import ios_ntp 导入库?

编辑:我想我明白了。不能 100% 确定为什么会发生这种情况,但我的直觉是它与 Cocoapods 和 ios-ntp 对 CocoaAsyncSocket 的依赖有关。 ios-ntp 对 CocoaAsyncSocket header 的导入造成了循环依赖,这让 ios-ntp 的构建变得乏味。

解决方法: https://github.com/ruddct/ios-ntp 应该可以解决问题,该分支包含一些非常小的 header 更改以在 ios-ntp 的 header 中转发声明 CocoaAsyncSocket 内容,这解决了问题。

有关此问题的更多背景信息,请参阅 How to prevent circular reference when Swift bridging header imports a file that imports Hopscotch-Swift.h itself

当您使用 Pods 时,您必须:

  1. 打开Pods.xcodeproj
  2. 在目标中 select ios-ntp
  3. Select 'Build Phases' 选项卡
  4. 将 GCDAsyncSocket.h 和 GCDAsyncUDPSocket.h 添加到编译源和 Headers
  5. 记得在ios-ntp
  6. 中将'Allow Non-modular includes in Framework Modules'设为是

对我来说,这行得通。