0

XIBファイルで設計しているビューがあり、通常どおりUIViewから継承する通常のクラスを作成しています。ビューにスワイプ機能を追加する必要があります。まず、はい、何かが IB をオーバーライドする場合に備えて、IB とviewDidLoadメソッドの両方でユーザー操作を有効にしました。self.view.userInteractionEnabled = YES;

メソッドでこの方法でスワイプジェスチャレコグナイザーを作成していますviewDidLoad

UISwipeGestureRecognizer *swiper = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swiped:)];
[self.view addGestureRecognizer:swiper];

私が持っている場所:

- (void)swiped:(UISwipeGestureRecognizer*)sender {
    self.swipeAction();    
}

アプリを実行してスワイプ ジェスチャを実行すると、EXC_BAD_ACCESS エラーが発生します。

エラー

興味深いのは、self.swipeAction();ヒットさえしないブレークポイントがオンラインにあることです。すぐにこのエラーが発生します。悪いアクセスエラーが発生することもあれば、次のような非常に奇妙なエラーが発生することもあります。

-[UIViewAnimationState swiped:]: unrecognized selector sent to instance 0x96263f0

UIViewAnimationState私もそれを見たので、NSStringあまりにも置き換えることができます。出力でそれを取得すると、EXC_BAD_ACCESS ではなく SIGABRT が表示されます。この動作の原因は何ですか? IB でもジェスチャ認識エンジンを作成しようとしましたが、同じ結果が得られました。

動作は完全に不確定です。まったく同じことを 2 回試して、アクセスが悪くなるとすぐに、2 回目の実行で sigabrt が発生します。

私が見逃している基本的なものはありますか?それとも、どこかで深刻なメモリ リークが発生していることを示しているのでしょうか (これは、スワイプ ジェスチャ レコグナイザーでのみ強迫的に表示され、それ以外の場所では表示されません)。エミュレーターと実際のデバイスの両方を、エミュレーターの異なる iOS バージョンで試しました。運が悪い、すべて同じ。

ありがとう、

できる。

4

0 に答える 0