あるあるだと思うのですが。。。
Class Map
var image = UIImage()
let url = "https://〜"
let overlay = MKTileOverlay(urlTemplate: url)
overlay.loadTile(at: path!) { (Data, Error) in
image = UIImage(data: Data!)! //!!Error!!
return
}
こんな書き方をすると、
"Reference to property 'image' in closure requires explicit 'self.' to make capture semantics explicit"
と怒られてしまいます。
修正方法は簡単で、Xcodeに言われるがまま、怒られた変数にselfをつければいいです
Class Map
var image = UIImage()
let url = "https://〜"
let overlay = MKTileOverlay(urlTemplate: url)
overlay.loadTile(at: path!) { (Data, Error) in
self.image = UIImage(data: Data!)! //OK
return
}
で、これは何が怒られているかというと、クロージャの中で変数の参照を持つため、
循環参照になっていないか意識させるために、Swiftの文法上Selfの指定が必須になっています。