这个问题真的把我难住了……
我有一个使用 UIPanGestureRecognizer 的 iPad 项目,并且在我的 handlePanGesture 中使用以下方法调用:
- (AIEnemyUnit *) hitTestForEnemyUnit:(CGPoint)where {
CALayer * layer = [self hitTest:where];
while (layer) {
if ([layer isKindOfClass:[AIEnemyUnit class]]) {
return (AIEnemyUnit *)layer;
} else {
layer = layer.superlayer;
}
}
return nil;
}
一旦我“找到”了一个 AIEnemyUnit 层,我继续拖动,一切正常。除了大约在第 6 到第 10 次“拖动”时,调试器仅在 CALayer -hitTest 深处发生崩溃:
modifying layer that is being finalized - 0x124530
*** -[NSCFSet hitTest:]: unrecognized selector sent to instance 0x124530
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason:
'*** -[NSCFSet hitTest:]: unrecognized selector sent to instance 0x124530'