将目标 C 自引用结构转换为 Swift



自指 在目标 C 中可以有结构。

typedef struct Sample {
struct Sample* first;
struct Sample* second;
struct Sample* third;
} SampleStruct;

快速转换看起来像

struct Sample {
var first: Sample?
var second: Sample?
var third: Sample?
}
typealias SampleStruct = Sample

但它抛出一个编译器错误,指出"值类型'Sample'不能具有引用自身的存储属性"。

如何将自引用结构转换为 swift?

你知道你不能在Objective-C中定义这种结构。

typedef struct Sample {
struct Sample first;
struct Sample second;
struct Sample third;
} SampleStruct;

(Swift 为每个 Optional 添加一个隐藏的isNil...字段,但差别不大。

如果你想定义一个与Objective-C代码完全相同的代码,你需要使用指针,就像在原始代码中一样。

struct Sample {
var first: UnsafeMutablePointer<Sample>?
var second: UnsafeMutablePointer<Sample>?
var third: UnsafeMutablePointer<Sample>?
}

最好考虑使用注释中的类。

最新更新