在所有成员初始化之前被闭包捕获的自我

Rya*_*zzo 1 core-location swift swift3

我的 ViewController 看起来像这样:

class ViewController: UIViewController {

... (Optional Variables declared)

var geoLoc: CLLocationCoordinate2D?

override func viewDidLoad() {
... (Optional Variables initialized)
        geocoder.geocodeAddressString(addressString) { (placemarks, error) in
            self.geoLoc = placemarks?[0].location?.coordinate
        }

}

}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

'self' captured by a closure before all members were initialized
Run Code Online (Sandbox Code Playgroud)

我尝试了许多死胡同的解决方法,但根本找不到问题的原因。有什么建议?

Dáv*_*tor 5

问题是您的类中有一些变量只被声明,但在调用捕获时未初始化,您指的是self.

声明一个变量:var a: Int和初始化它:var a:Int = 0var a:Int? = nil不一样。

类的所有变量都需要初始化(给定初始值)才能引用self.