我收到以下错误:无法识别的选择器发送到实例 并找到了许多对我不起作用的解决方案。我从视图类创建对象。我点击了imageview然后我收到了错误
我有以下代码:
@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");
}
答案 0 :(得分:0)
您忽略了致电[super initWithRect:]
或任何其他超级init
。根据Apple的文档(重点补充):
在初始化对象之前,尚未准备好使用该对象。该 NSObject类中定义的init方法没有初始化;它 只是回归自我。
在此方法的自定义实现中,您必须调用super的指定初始值设定项,然后初始化并返回新对象。如果 新对象无法初始化,该方法应返回nil。
由于你没有做必须的事情,你应该期待未定义的行为。
(编辑:我也不确定你要对myRect
做什么,但是一旦你回来,它只会是一个无效的指针。