2016-03-03 562 views
0

分配成员函数的成员变量是否有可能,还是功能需要申报staticclass斯威夫特

class SimManager { 
    var particleSimulation: (inout Particle, Float) -> Void = updateParticles 

    func updateParticles(inout p: Particle, deltaT: Float) -> Void { 
     ... 
    } 
} 

给人的编译器错误:

SimManager.swift:36:63: Cannot convert value of type 'SimManager -> (inout Particle, deltaT: Float) -> Void' to specified type '(inout Particle, Float) -> Void'

回答

1

移动的particleSimulation初始化到类的指定初始化。

class SimManager { 
    var particleSimulation: ((inout Particle, Float) -> Void)! 

    func updateParticles(inout p: Particle, deltaT: Float) -> Void { 
    } 

    init() { 
    self.particleSimulation = updateParticles 
    } 
} 
+0

感谢的作品。下面的丑也在init()中起作用,以避免需要将其声明为隐式展开的可选项: particleSimulation = updateParticles ' 这个函数每帧调用5000+次,所以非常关键。因为它是'ImplicitlyUnwrappedOptional '类型的别名,所以可能会有一些开销,但不确定。为了避免动态调度开销,我还声明了函数final。 –