Arm1.ru

Блок (замыкание) как свойство класса в Swift

Пример использования блока (замыкания) как свойства класса в Swift. Инициализируется как nil.

class ChatViewController: UIViewController {

  var someClosure: (() -> Void)! // nil
  var anotherClosure: ((arg: Double) -> Bool)! // nil

  func executeClosures() {
    if self.someClosure != nil {
      self.someClosure()
    }

    if self.anotherClosure != nil {
      let boolResult = self.anotherClosure(arg: 2.0)
    }
  }

  func addSelfClosure(closure: (() -> Void)!) {
    self.someClosure = closure
  }

  func printSomething() {
    self.addSelfClosure() {
      print("closure called")
    }
    self.executeClosures() // prints: closure called
  }

}

keyboard_return back