-4

我的项目中有两个类:SIAViewController.h和它的子类cell.h

cell.h我有

@interface cell : UIViewController
@property(nonatomic)CGRect frame;
@property(assign,nonatomic)UIImage *image;
@property(nonatomic)int tag;
@property(nonatomic)bool userInteractionEnabled;
@property(retain,nonatomic)UITapGestureRecognizer *addGestureRecognizer;
@end

并在SIAViewController.m

int x=20,y=50,t=1;
cell *tank[9][9];
for(int i=1;i<=8;i++)
{
    for(int j=1;j<=8;j++)
    {
        tank[i][j]=[[cell alloc]init];
        tank[i][j].frame=CGRectMake(x, y, 35, 35);
        UIImage *myImage=[UIImage imageNamed:@"s.jpg"];
        [tank[i][j] setImage:myImage];
        tank[i][j].tag=t;
        tank[i][j].userInteractionEnabled=YES;
        UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapDetected:)];
        tank[i][j]. addGestureRecognizer=recognizer;
        [self.view addSubview:tank[i][j]];
        x+=35;
        t++;
    }
    y+=35;
    x=20;
}

在运行项目时,我收到线程不兼容的指针类型,将单元 __strong 发送到 uiview 类型的参数。谁能帮我。我是 xcode 的新手。谢谢

4

1 回答 1

1

原因是,UIView 是表格视图单元格的超类。这意味着如果某些属性应该是 UITableViewCell,但您传入了一个通用的 UIView 实例,则该 UIView 可能但不一定也是 UITableViewCell。这就是编译器警告您的原因。如果你知道你要设置的实例实际上是一个伪装成 UIView 的 UITableViewCell,你可以放心地忽略这个警告,因为 Objective-C 是一种动态语言;类型声明仅用于欺骗编译器;类型匹配发生在运行时。

于 2012-07-07T08:15:01.337 回答