【问题标题】:What is the alternative of this objective-c code in swift [closed]这个objective-c代码在swift中的替代方法是什么[关闭]
【发布时间】:2015-10-28 21:36:41
【问题描述】:

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

sprite.physicsBody = [SKPhysicsBody bodyWithFile: bodyFile];

【问题讨论】:

    标签: ios objective-c swift sprite-kit


    【解决方案1】:

    官方SKPhysicsBody类没有这个方法,所以它必须是一个扩展。但只要我们谈论的是 Swift 替代方案,它要么必须是一个

    sprite.physicsBody = SKPhysicsBody.bodyWithFile(bodyFile)

    sprite.physicsBody = SKPhysicsBody(file: bodyFile)

    取决于 Swift 处理您的扩展的能力。

    【讨论】:

    • 是的,谢谢你,我忘了我添加了外部库
    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 2016-08-21
      • 1970-01-01
      相关资源
      最近更新 更多