Swift 2.0,闭包=函数()

Swift 2.0, closure = function()

嘿,我有一个问题,我似乎无法解决这个问题

我有闭合类型

public typealias VoidCompletionHandler = ()->Void

然后我创建一个可选变量

var favouritePropertyStateHandler:VoidCompletionHandler?

那我叫它

self.favouriteCellStateHandler?()

一切正常

self.propertyModel?.favouritePropertyStateHandler = { self.favouriteStateChanged() }

与函数类型完美搭配

func favouriteStateChanged()->Void

但为什么我不能

self.propertyModel?.favouritePropertyStateHandler = self.favouriteStateChanged()

类型匹配 - 都是?

()->Void  

我得到的错误是

Cannot assign a value of type 'Void' ('aka '()') to a value of type 'VoidCopletionHanlder?'

已解决

self.propertyModel?.favouritePropertyStateHandler = self.favouriteStateChanged

然而这又产生了另一个问题,我如何才能不导致永久保留循环?如果我想让自己变弱?

您分配的是 self.favouriteStateChanged() 的结果,而不是函数本身。尝试

self.propertyModel?.favouritePropertyStateHandler = self.favouriteStateChanged

相反。