Objective-C 中结构的扩展

Extension of a struct in Objective-C

我在 Swift 中有一个扩展名(SCNVector3),如下所示:

extension SCNVector3 {

    // some functions extending SCNVector3 here....

}

我想将此扩展名转换为 Objective-C。我知道 ObjC 中的扩展等价物是 'categories' 但似乎不可能在像 SCNVector3.

这样的结构上创建类别

https://developer.apple.com/documentation/scenekit/scnvector3

Objective C 中没有等同于 Swift 的结构。您应该将扩展的方法实现为 C 函数。例如计算向量的长度:

inline SCNVector3 ExtSCNVector3Subtract(SCNVector3 inA, SCNVector3 inB) {
    return SCNVector3Make(inA.x - inB.x, inA.y - inB.y, inA.z - inB.z);
}

inline float ExtSCNVector3Length(SCNVector3 inA) {
    return sqrtf(inA.x * inA.x + inA.y * inA.y + inA.z * inA.z);
}

如何命名函数完全取决于您的喜好。你这样称呼它:

SCNVector3 a = ...;
SCNVector3 a = ...;
float distance = ExtSCNVector3Length(ExtSCNVector3Subtract(a, b));