swift中这段代码的等价物是什么?
sprite.physicsBody = [SKPhysicsBody bodyWithFile: bodyFile];
答案 0 :(得分:0)
官方SKPhysicsBody
类没有这样的方法,所以它必须是扩展名。但只要我们谈论Swift替代品,它必须是
sprite.physicsBody = SKPhysicsBody.bodyWithFile(bodyFile)
或
sprite.physicsBody = SKPhysicsBody(file: bodyFile)
取决于Swift处理扩展程序的效果。
答案 1 :(得分:-2)
答案并不完全清楚。
首先,您没有告诉我们bodyFile
参数的类型。对于本文的其余部分,我将假设其类型为BodyFileType
。
使用initWithBodyFile之类的init方法,Swift编译器识别“initWithXXX”命名模式并创建一个你调用的init方法:
Class SKPhysicsBody
{
init(bodyFile: BodyFileType)
{
//init code
}
}
你可以这样称呼它:
SKPhysicsBody.body(file: bodyFile)
Objective-C方法不是init方法,它是一个方便的“类工厂”方法,它创建并返回一个对象。
我不认为Swift对这样的方法有任何特殊处理。相反,你只需要根据它的Objective-C签名来调用它。
sprite.physicsBody = SKPhysicsBody.bodyWithFile(bodyFile)