实例化一个类有什么区别?

时间:2017-06-17 22:03:57

标签: ios swift swift3

每个人,

我试图理解为什么例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

感谢您的帮助, 此致

1 个答案:

答案 0 :(得分:5)

在示例1中,在您致电exempleOneDetail之前,您永远不会将goooooo()设置为任何内容,因此它是nil

在示例2中,您创建了一个名为exempleOneDetail本地变量,并为其分配了一个初始化对象,然后调用 goooooo(),所以它符合你的期望。 ,请注意本地副本,因为它与实例变量的同名 shadowing 该变量,如果您尝试在exempleOneLabel之外的任何位置使用handleZoomTap(),它仍然是nil,因为您从未为其分配过任何内容。

相关问题