【问题标题】:App Crashes when touched触摸时应用程序崩溃
【发布时间】:2012-06-16 09:32:01
【问题描述】:
当我构建应用程序时,我会在 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];
}
当我运行应用程序时,一切都开始正常,直到我单击播放器然后它关闭。谁能帮忙?
【问题讨论】:
标签:
iphone
objective-c
xcode
ios-simulator
【解决方案1】:
-allObjects 方法返回你触摸的NSArray,如果你想从集合中获取单个对象,你需要使用-anyObject 方法:
UITouch *myTouch = [[event allTouches] anyObject];
【解决方案2】:
你的意思可能是:
UITouch *myTouch = [[event allTouches] anyObject];
或:
UITouch *myTouch = [touches anyObject];
【解决方案3】:
您的变量myTouch 是一个指向UITouch 对象的指针。但是,如果您查看文档,您会发现UIEvent 的allTouches 返回一个NSSet,而NSSet 的allObjects 返回一个NSArray。因此,您试图告诉计算机myTouch 将获得一个传入的UITouch 对象,而它几乎肯定会获得一个NSArray。
就像把一个方形钉子放在一个圆孔里。