-4

私のプロジェクトにはSIAViewController.h、 とそのサブクラス の2 つのクラスがあり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 に答える