0

我在 Swift 中有一个字符串数组,声明如下:

var DataStreamBuffer : [String] = {return []}()

在 Swift 中添加一个新元素,这很容易。我只是做:

DataStreamBuffer.append(new_string)

但是,我需要从 C 文件向 DataStreamBuffer 追加一个新元素。我的 C 代码中的正确程序应该是什么?我应该在 Swift 中做什么,以便从 C 中可以看到 DataStreamBuffer(我是否必须在 Bridging-Header.h 中声明任何内容?)

4

1 回答 1

0

如果您的意思是 Objective-C,那么这可能会有所帮助:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122

我自己还没有玩过它,所以我不确定是否有任何Objective-C 代码可以调用 Swift。如果是这种情况,那么您项目中的任何 C 代码都可以调用您的 Swift 代码,因为任何 C 代码都是有效的 Objective-C(即 Objective-C 是 C 的超集)。然而,反之亦然。

另一种方法是有一个 C 函数,它返回一个您想要附加到 Swift 字符串数组的字符串。C 函数从 Swift 代码中调用,它获取字符串并将其实际附加到 Swift 数组中。您将使用桥接头使 C 函数对 Swift 可见。

这种方法的一种变体是在 C 代码中声明一个回调函数,使用桥接头将声明导入 Swift,然后在 Swift 中实现回调。这是一种更困难的方法,但如果应用程序逻辑的这一部分是由 C 代码控制的,那么它会派上用场。

如果你提供更详细的背景信息,人们可能会给你更具体的建议,甚至是一些例子。

于 2016-02-12T03:40:43.167 回答