UITapRecognizer: в экземпляр отправлен нераспознанный селектор

Я получил следующую ошибку: нераспознанный селектор отправлен в экземпляр и нашел много решений, которые не сработали для меня. Я создаю объект из класса представления. Я нажимаю на изображение, а затем получаю сообщение об ошибке

У меня есть следующий код:

@implementation MyTappableImage

@synthesize myImageView, myRect, isTapped, myTap;

- (id)initWithRect:(CGRect) myRect2
{ 
myRect = &myRect2;
UIImage *image = [UIImage imageNamed: @"hert.png"];
myImageView = [[UIImageView alloc]initWithFrame:*myRect];
myImageView.userInteractionEnabled = YES;
[myImageView setImage:image];
isTapped = NO;
myTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapped:)];
[myImageView addGestureRecognizer:myTap];
return self;
}

-(void)tapped:(UITapGestureRecognizer *)gr {
NSLog(@"druk");
}

person user2714257    schedule 24.08.2013    source источник
comment
Вам нужно обновить свой вопрос с полным сообщением об ошибке.   -  person rmaddy    schedule 25.08.2013


Ответы (1)


Вы забыли позвонить [super initWithRect:] или любому другому супер init. Согласно документации Apple (выделено мной):

Объект не готов к использованию, пока он не будет инициализирован. Метод init, определенный в классе NSObject, не выполняет инициализацию; он просто возвращает себя.

В пользовательской реализации этого метода вы должны вызвать назначенный инициализатор super, а затем инициализировать и вернуть новый объект. Если новый объект не может быть инициализирован, метод должен возвращать nil.

Поскольку вы не можете сделать что-то, что должно сделать, вы должны ожидать неопределенного поведения.

(EDIT: я также не уверен, что вы пытаетесь сделать с myRect, но, как написано, это будет просто недопустимый указатель, как только вы вернетесь).

person Tommy    schedule 24.08.2013