Ios UIAPTgestureRecognitor不(始终)适用于与UIViewController不同的目标

Ios UIAPTgestureRecognitor不(始终)适用于与UIViewController不同的目标,ios,objective-c,uikit,uitapgesturerecognizer,Ios,Objective C,Uikit,Uitapgesturerecognizer,我有一个定制的iOS控制器类,它以编程方式将ui按钮添加到给定的ui视图。该按钮有一个关联的UIAppgestureRecognitizer,但只有当自定义控制器是嵌入视图和按钮的UIViewController的@属性时,该按钮才起作用 请参见2个按钮示例,第一个按钮不记录轻触手势 有人能解释一下原因吗?这都是关于对象生命周期的。为了在点击按钮时成为按钮的目标,目标对象必须在点击按钮时存在 对于第一个按钮,情况并非如此(不会发生任何事情),因为目标只是一个立即消失的局部变量。另一方面,其他目

我有一个定制的iOS控制器类,它以编程方式将
ui按钮添加到给定的
ui视图
。该按钮有一个关联的
UIAppgestureRecognitizer
,但只有当自定义控制器是嵌入视图和按钮的
UIViewController
@属性时,该按钮才起作用

请参见2个按钮示例,第一个按钮不记录轻触手势


有人能解释一下原因吗?

这都是关于对象生命周期的。为了在点击按钮时成为按钮的目标,目标对象必须在点击按钮时存在


对于第一个按钮,情况并非如此(不会发生任何事情),因为目标只是一个立即消失的局部变量。另一方面,其他目标对象是持久的。例如,视图控制器实例的属性在视图控制器存在的时间内保持不变。视图控制器通常寿命很长;特别是,如果使用得当,如果按钮是视图控制器自身视图的子视图,则它的寿命与按钮的寿命一样长

都是关于对象生命周期的。为了在点击按钮时成为按钮的目标,目标对象必须在点击按钮时存在


对于第一个按钮,情况并非如此(不会发生任何事情),因为目标只是一个立即消失的局部变量。另一方面,其他目标对象是持久的。例如,视图控制器实例的属性在视图控制器存在的时间内保持不变。视图控制器通常寿命很长;特别是,如果使用得当,如果按钮是视图控制器自身视图的子视图,则它的寿命与按钮的寿命一样长

谢谢matt,这很有道理“目标对象必须存在”,苹果应该将其添加到官方文档中,因为目标定义
一个对象是接收者在识别手势时发送的动作消息的接收者,这个对象太模糊了。我不认为苹果会因为没有明确提到不存在的对象不能做任何工作而受到指责。这是很明显的。正如我所说的,它实际上是关于对象生命周期的。这是你似乎还没有理解的谜题的一部分(即,提示你问题的东西)。但是,如果您要进行面向对象编程,理解对象生命周期是关键!你的问题说明了它有多重要。谢谢matt,它有道理“目标对象必须存在”,苹果应该将其添加到官方文档中,因为目标定义
一个对象是接收者在识别手势时发送的动作消息的接收者,这个对象太模糊了。我不认为苹果会因为没有明确提到不存在的对象不能做任何工作而受到指责。这是很明显的。正如我所说的,它实际上是关于对象生命周期的。这是你似乎还没有理解的谜题的一部分(即,提示你问题的东西)。但是,如果您要进行面向对象编程,理解对象生命周期是关键!你的问题说明了这是多么重要。