You need to use self to access instance methods in lazy properties:
class ColumnNode: SCNNode { lazy var upperColumnNode: SCNNode = { return self.buildColumPart() }() func buildColumPart() -> SCNNode { var node = SCNNode() ... return node } }
Interestingly, the reason he complains about parameter # 1 is because instance methods are actually class methods that take an instance as a parameter and return a closure with the captured instance - instead of self.buildColumPart() you could instead this call buildColumPart(self)() .
source share