将Objective C Self Referential Struct转换为Swift

时间:2017-08-08 22:43:30

标签: objective-c swift

自我指称结构在客观C中是可能的。例如:

body{
  min-height: 2000px;
}

#insertNav{
  width: 100%;
  max-height: 200px;
  background-color: #F0F;
}

快速转换看起来像

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

但它会抛出一个编译器错误,说“"值类型'样本'不能拥有引用自身的存储属性"。

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

1 个答案:

答案 0 :(得分:3)

你知道你无法在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>?
}

最好考虑使用类作为评论。