每个人,
我试图理解为什么例1返回nil(不要调用goooo函数),第二个例子称之为。我需要做些额外的事吗?
例1:
class A: UICollectionViewCell {
var exempleOneDetail: ExempleOneDetail?
...
}
func handleZoomTap(_ tapGesture: UITapGestureRecognizer) {
self.exempleOneDetail?.goooo(imageView)
}
=>>结果为
例2:
func handleZoomTap(_ tapGesture: UITapGestureRecognizer) {
let exempleOneDetail = ExempleOneDetail()
exempleOneDetail?.goooo(imageView)
}
=>>结果:调用函数goooo
感谢您的帮助, 此致
答案 0 :(得分:5)
在示例1中,在您致电exempleOneDetail
之前,您永远不会将goooooo()
设置为任何内容,因此它是nil
。
在示例2中,您创建了一个名为exempleOneDetail
的本地变量,并为其分配了一个初始化对象,然后调用 goooooo(),所以它符合你的期望。 但,请注意本地副本,因为它与实例变量的同名是 shadowing 该变量,如果您尝试在exempleOneLabel
之外的任何位置使用handleZoomTap()
,它仍然是nil
,因为您从未为其分配过任何内容。