以这种常见情况为例:
class FooClass {
var success:AnyObject! -> Void
var failure:NSError! -> Void
init() {
self.success = ({ object in })
self.failure = ({ error in })
}
func request(success:(AnyObject! -> Void), failure:(NSError! -> Void)) {
self.success = success
self.failure = failure
}
}
extension FooClass: NSURLConnectionDelegate, NSURLConnectionDataDelegate {
func connection(connection: NSURLConnection!, didFailWithError error:NSError!) {
println("Connection error: \(error)")
self.failure(error)
}
}
看起来不错......编译...... Agh !!! WTF Swift?!这适用于ObjC !!
由于与我的代码示例类似的实现,我完全确定编译器错误正在发生。
似乎不喜欢闭包是空/可选的想法。
有人可以权衡这个吗?编译错误?用户错误?