假设我想创建一个GestureRecognizer
对象,并在那里拥有我的整个逻辑。因此,当我将NSObject添加为识别器的目标时:
initWithTarget:self action:@selector(doTheRecognizerThing:)
我正面临一个问题,我不知道为什么。我得到了
unrecognized selector sent to instance
错误,尽管我的NSObject中正确实现了doTheRecognizerThing
方法。
如果我添加目标并在任何其他对象(如UIView或UIViewController)中实现该方法,我不会遇到任何问题。对此有解释吗?
修改
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self
action:@selector(doTheRecognizerThing:)];
Implemantation
- (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'
答案 0 :(得分:1)
您将在某一时刻将识别器添加到视图中。这强烈地保存了识别器。在某些时候,你的对象消失了,而视图仍然存在 - 并且随之而来的是识别器。这会调用该方法,但对象已经消失并被其他东西取代。
答案 1 :(得分:-1)
试试这个:
initWithTarget:ObjectWithThatMethod action:@selector(doTheRecognizerThing:)
确保doTheRecognizerThing
位于头文件中。
并确保NSObject不是零。