【问题标题】:XCode 4, Incompatible types in initializationXCode 4,初始化中的不兼容类型
【发布时间】:2012-06-01 19:53:37
【问题描述】:

这段代码有什么问题?

-(float) getRotatingAngle : (CGPoint)firstPoint secondPoint:(CGPoint)secondPoint
{
   float dx = firstPoint.x - secondPoint.x;
   float dy = firstPoint.y - secondPoint.y;
   float angle = CC_RADIANS_TO_DEGREES(atan2(dy, dx));
   return angle;
}

当我尝试这样称呼它时:

float ang = [self getRotatingAngle:projectile.position secondPoint:projectile.position];

我从标题中得到错误。 我正在使用 cocos2d (COCOS2D_VERSION 0x00010001)。

代码位于CCLayerColor 中的ccTouchesEnded 处理程序中。

任何帮助表示赞赏。

编辑: 弹丸是CCSprite

编辑:编译器错误是(如标题)Incompatible types in initialization. TheLayer may not respond to '-getRotatingAngle:secondPoint'

提示:这是我从 cocos2d 项目中复制粘贴的代码,它在其中工作。只是该项目是cocos2d V2。 (?)

【问题讨论】:

  • 如果你使用“CGFloat”而不是float,你的运气会更好吗?
  • @Michael,不,还是一样。
  • 更好地向我们展示 projectile.position 是如何声明的。另外,在您尝试调用它之前是否声明了 getRotatingAngle:secondPoint?
  • 不,就是这样,但我和你同时想通了。谢谢。不知道该接受什么作为答案:S?
  • 至少给他们一个赞成票。没有人添加实际的“答案”,只有 cmets!

标签: objective-c xcode4 cocos2d-iphone


【解决方案1】:

您可以将私有方法定义添加到 .m 文件的顶部,如下所示:

@interface SomeClass ()  // Note the empty parens here

-(float) getRotatingAngle : (CGPoint)firstPoint secondPoint:(CGPoint)secondPoint;

@end

这使您可以在 .m 中按您想要的任何顺序组织您的方法。

【讨论】:

    【解决方案2】:

    哇。 我只是将方法移到第一个调用之上。 然后它起作用了。非常讨厌。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-08
      相关资源
      最近更新 更多