Ios radiansToVector和randomInRange Objective-C函数的快速替代方案是什么?
我看了一个旧的ios 7 spritekit课程,他们使用了这些方法。我试着在Swift中使用它们,但它们不起作用。我应该用什么来代替Ios radiansToVector和randomInRange Objective-C函数的快速替代方案是什么?,ios,objective-c,swift,sprite-kit,Ios,Objective C,Swift,Sprite Kit,我看了一个旧的ios 7 spritekit课程,他们使用了这些方法。我试着在Swift中使用它们,但它们不起作用。我应该用什么来代替 static inline CGVector radiansToVector(CGFloat radians) { CGVector vector; vector.dx = cosf(radians); vector.dy = sinf(radians); return vector; } static inline CGFlo
static inline CGVector radiansToVector(CGFloat radians) {
CGVector vector;
vector.dx = cosf(radians);
vector.dy = sinf(radians);
return vector;
}
static inline CGFloat randomInRange(CGFloat low, CGFloat high) {
CGFloat value = arc4random_uniform(UINT32_MAX) / (CGFloat)UINT32_MAX;
return value * (high - low) + low;
}
Swift重写:
func randomInRange(low: CGFloat, high: CGFloat) -> CGFloat {
let value = CGFloat(arc4random_uniform(UINT32_MAX)) / CGFloat(UINT32_MAX)
return value * (high - low) + low
}
func radiansToVector(radians: CGFloat) -> CGVector {
return CGVector(dx: cos(radians), dy: sin(radians))
}
更新:后一种更快速的方式(感谢@Jessy指出):
当然它不起作用,Objective-C(实际上代码是“纯”C)和Swift是两种不同的编程语言。你试着翻译代码了吗?你的问题是什么,你被困在哪里了?我知道我的意思是我试图修改代码以适应swift,但是我没有很好地修改它。谢谢你传递的“radiansToVector”不是真正的swift。应该是CGVector的初始值设定项。@Jessy因为CoreGraphics是基于C的框架,
在非类类型“CGVector”中不允许使用方便的初始值设定项。
你好,rshev我对一些代码有问题,我可以直接发邮件给你吗?@AdeebAbaza请在StackOverflow上发帖,这样其他人也可以帮助你。@Jessy谢谢,添加了一个示例。
extension CGVector {
init(radians: CGFloat) {
self.dx = cos(radians)
self.dy = sin(radians)
}
}