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));
我在 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));