2

当我构建应用程序时,我在 UITouch 行上收到警告说

不兼容的 Object-c 初始化“struct NSArray *”,预期为“struct UITouch *”

 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *myTouch = [[event allTouches] allObjects];
        player.center = [myTouch locationInView:self.view];
    }

当我运行该应用程序时,一切都开始正常,直到我单击播放器然后它关闭。谁能帮忙?

4

3 回答 3

1

-allObjects方法返回NSArray您的触摸,如果您想从集合中获取单个对象,您需要使用-anyObject方法:

UITouch *myTouch = [[event allTouches] anyObject];
于 2012-06-16T09:33:54.410 回答
0

可能你的意思是:

UITouch *myTouch = [[event allTouches] anyObject];

或者:

UITouch *myTouch = [touches anyObject];
于 2012-06-16T09:33:59.663 回答
0

您的变量myTouch是指向UITouch对象的指针。但是,如果您查看文档,您会发现allTouchesaUIEvent返回 an NSSet,并且allObjectsanNSSet返回 an NSArray。因此,您试图告诉计算机myTouch将获得一个UITouch传入的对象,而它几乎肯定会获得一个NSArray.

就像把一个方形钉子放在一个圆孔里。

于 2012-06-16T09:40:43.260 回答