initwithtarget:self 其中 self 是 NSObject

initwithtarget:self where self is NSObject

假设我想创建一个 GestureRecognizer 对象并在其中包含我的整个逻辑。因此,当我将 NSObject 添加为识别器的目标时:

initWithTarget:self action:@selector(doTheRecognizerThing:)

我遇到了一个问题,我不确定为什么。我得到一个

unrecognized selector sent to instance

错误,尽管 doTheRecognizerThing 方法已在我的 NSObject 中正确实现。 如果我添加目标并在任何其他对象(例如 UIView 或 UIViewController)中实现该方法,我不会遇到任何问题。对此有解释吗?

编辑

UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self
                                                                                              action:@selector(doTheRecognizerThing:)];

实施

- (void) doTheRecognizerThing:(UIPanGestureRecognizer *)panGestureRecognizer {
  //blah blah blah
}

错误信息:

-[CALayerArray doTheRecognizerThing:]: unrecognized selector sent to instance 0x14648a80
2015-01-06 23:05:20.788 Gestures[2203:1094298] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CALayerArray doTheRecognizerThing:]: unrecognized selector sent to instance 0x14648a80'

试试这个:

initWithTarget:ObjectWithThatMethod action:@selector(doTheRecognizerThing:)

确保 doTheRecognizerThing 在头文件中。 并确保 NSObject 不为零。

您有时会将识别器添加到视图中。这强烈支持识别器。在某个时候,你的对象消失了,而视图仍然存在——识别器也随之消失。那调用了方法,但是对象不见了,取而代之的是别的东西。