【问题标题】:Objective C using multiple parameters across classesObjective C 跨类使用多个参数
【发布时间】:2011-12-06 16:09:00
【问题描述】:

我在名为 GameManager 的类中有以下声明:

-(void)playBackgroundTrack:(NSString*)trackFileName isAmbient:(BOOL*)ambient {

}

我希望能够打电话

[[GameManager sharedGameManager] playBackgroundTrack:BACKGROUND_TRACK isAmbient:NO];

[[GameManager sharedGameManager] playBackgroundTrack:BACKGROUND_TRACK isAmbient:YES];

但我收到警告:

语义问题:找不到实例方法“-playBackgroundTrack:isAmbient:”(返回类型默认为“id”)

并尝试使用 isAmbient 参数崩溃。

如果我在两个地方都关闭 isAmbient 声明,它可以正常工作(但我当然不能使用我想要的参数!)。

【问题讨论】:

    标签: objective-c ios cocos2d-iphone audio


    【解决方案1】:

    您应该在声明中使用普通的BOOL,而不是BOOL*,如下所示:

    -(void)playBackgroundTrack:(NSString*)trackFileName isAmbient:(BOOL)ambient;
    

    【讨论】:

    • 谢谢 不是直截了当!需要更多的代表来支持你
    • @Eric 没关系,没有必要支持这个答案。不过,接受其中一个答案是个好主意:它会使您的“接受答案的百分比”保持在较高水平,这在您将来提出更多问题时很有帮助。祝你好运!
    【解决方案2】:

    将isAmbient的参数类型由BOOL*改为BOOL

    【讨论】:

      【解决方案3】:

      第一段代码不是声明,而是定义。声明是签名,以分号结尾并放置在头文件中(通常)。

      然后您需要在声明中包含该类头文件,以便您的其他类知道该方法存在。这将解决“找不到方法”的问题。

      顺便说一句,您可能打算使用普通的 BOOL,而不是指向它的指针。这可能是导致崩溃的原因。

      【讨论】:

      • 谢谢 不是直截了当!需要更多的代表来支持你
      猜你喜欢
      • 2012-08-13
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多