1

我收到以下错误:无法识别的选择器发送到实例并发现很多对我不起作用的解决方案。我从视图类创建对象。我点击图像视图,然后我得到了错误

我有以下代码:

@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");
}
4

1 回答 1

0

您忽略了 call[super initWithRect:]或任何其他 super init。根据 Apple 的文档(已添加重点):

对象在初始化之前还不能使用。NSObject 类中定义的 init 方法不进行初始化;它只是返回自我。

在此方法的自定义实现中,您必须调用 super 的指定初始化程序,然后初始化并返回新对象。如果新对象不能被初始化,该方法应该返回 nil。

由于您没有做必须做的事情,因此您应该期待未定义的行为。

(编辑:我也不确定您要做什么,myRect但正如所写的那样,一旦您返回,它将只是一个无效的指针)。

于 2013-08-24T20:33:53.243 回答