gpt4 book ai didi

c - 如何将一个很长的 C 宏桥接到 Swift?

转载 作者:可可西里 更新时间:2023-11-01 00:58:31 26 4
gpt4 key购买 nike

在 Foundation 中有一个 C 宏 NSURLResponseUnknownLength 定义为一个 long long:

#define NSURLResponseUnknownLength ((long long)-1)

由于宏桥接到 Swift 的方式,这个常量可以在 Objective-C 应用程序中访问,但不能在 Swift 应用程序中访问。如何让 Swift 可以看到这些宏?

我已经尝试将宏包装在我的桥接 header 中的全局 C 函数中:

long long getNSURLResponseUnknownLength() {
return NSURLResponseUnknownLength;
}

但是访问 getNSURLResponseUnknownLength() 会导致 Undefined symbols for architecture 构建错误。

最佳答案

解决方案是从宏中声明一个新的常量值:

const long long myNSURLResponseUnknownLength = NSURLResponseUnknownLength;

这将 NSURLResponseUnknownLength 连接为 Int64 let 常量。

用法:

if urlResponse.expectedContentLength == myNSURLResponseUnknownLength {
// ...
}

Martin R 提到 in the comments问题中的尝试适用于 Xcode 8。在 Xcode 7 中,您需要将函数声明为 static:

static long long getNSURLResponseUnknownLength() { /* */ }

这是 Swift 的一个已知问题,有望在即将发布的版本中得到修复。

  • SR-485

  • rdar://problem/20462344

关于c - 如何将一个很长的 C 宏桥接到 Swift?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39256489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com