スタックに新しいビューをプッシュするかなり単純な UITableView があります。新しいビューには、このように初期化されるgestureRecognizerがあります
@synthesize swipeGestureLeft;
- (void)viewDidLoad
{
swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(toggleViewLeft)];
swipeGestureLeft.numberOfTouchesRequired = 1;
swipeGestureLeft.delegate=self;
swipeGestureLeft.direction = (UISwipeGestureRecognizerDirectionLeft);
[self.view addGestureRecognizer:swipeGestureLeft];
}
デリゲートメソッドも呼び出します
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if (viewShown==1) {
return NO;
}
return YES;
}
そして、私が持っているdeallocメソッドで
- (void)dealloc {
NSLog(@"I AM IN DEALLOC");
swipeGestureLeft.delegate=nil;
[self.view removeGestureRecognizer:swipeGestureLeft];
swipeGestureLeft=nil;
}
私の.hファイルに
@interface MyViewController : UIViewController <UIGestureRecognizerDelegate>
テーブル ビューに戻るためにヒットすると、ビューの割り当てが解除されます (NSLog が起動するため、これを確認できます)。テーブル ビューを下にスワイプしようとすると、アプリがクラッシュします。
[MyViewController gestureRecognizer:shouldReceiveTouch:]: message sent to deallocated instance
ビューの割り当てが解除された後にデリゲート メソッドが呼び出されないようにするにはどうすればよいですか。