Я запутался, где и как создавать переменные в обработчике для UILongPressGestureRecognizer (LPGR).
Я создаю LPGR с:
-(void) createLongPress {
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
[self.view addGestureRecognizer:longPress];
}
Поскольку обработчик вызывается иоднако, я не уверен, как и где создавать экземпляры переменных.
Следующий код работает, но я обеспокоен тем, что он создает экземпляры переменных снова и снова.Должен ли я переместить их в case UIGestureRecognizerStateBegan: state
, который, я полагаю, вызывается только один раз, или можно оставить верхнюю часть метода, который вызывается снова и снова.
Вот код в моемобработчик
- (IBAction)handleLongPress:(id)sender {
//ALL THIS CODE IS CALLED OVER AND OVER
//Does this mean these variables are getting instantiated over and over?
UILongPressGestureRecognizer *longPress = (UILongPressGestureRecognizer *)sender;
UIGestureRecognizerState state = longPress.state;
CGPoint location = [longPress locationInView:self.view];
switch (state) {
case UIGestureRecognizerStateBegan: {
//Code called just once at beginning
//DO SETUP }
break;
}
case UIGestureRecognizerStateChanged: {
//Update stuff
}
break;
}
case UIGestureRecognizerStateEnded: {
//cleanup
}
default: {
//handle default case
}
break;
}
}