我在Swift中有一个扩展名(SCNVector3
),如下所示:
extension SCNVector3 {
// some functions extending SCNVector3 here....
}
我想将此扩展名转换为Objective-C。我知道ObjC中的扩展等同于'类别'但似乎不可能在像SCNVector3
这样的结构上创建一个类别。
https://developer.apple.com/documentation/scenekit/scnvector3
答案 0 :(得分:2)
在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));