現在のオブジェクトではないターゲットで UITapGesture を作成します。その後、タップするとアプリがクラッシュします。
コントローラ .h を表示:
@interface ViewController : UIViewController
{
IBOutlet UIImageView *iv;
}
@end
コントローラ .c を表示:
#import "ViewController.h"
#import "Target.h"
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
Target *t = [[Target alloc] init];
UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:t action:@selector(gestureDone:)];
[iv addGestureRecognizer:tgr];
[iv setUserInteractionEnabled:YES];
}
@end
ターゲット.h:
@interface Target : NSObject
- (void)gestureDone:(UIGestureRecognizer *)gr;
@end
Target.c:
@implementation Target
- (void)gestureDone:(UIGestureRecognizer *)gr
{
NSLog(@"Gesture!");
}
@end
(私の XIB ファイルには画像が 1 つしか含まれていません...) 画像をタップすると、クラッシュします。たとえば、インスタンス変数 Target *t をビュー コントローラーに追加した場合 (および viewDidLoad のローカル宣言を削除した場合)、問題は発生しません。そうしないときは、Target で dealloc をオーバーライドし、そこに NSLog を配置して、viewDidLoad の実行が終了するとすぐに Target オブジェクトが fred であることを確認しました。
私は何か間違ったことをしていますか、それとも何か問題がありますか? (通常、initWithTarget:self を使用しているため、この問題に直面していません ...)。