swift中这个objective-c代码的替代方法是什么

时间:2015-08-05 22:28:31

标签: ios objective-c swift sprite-kit

swift中这段代码的等价物是什么?

sprite.physicsBody = [SKPhysicsBody bodyWithFile: bodyFile];

2 个答案:

答案 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)