Objective C跨类使用多个参数

时间:2011-12-06 16:09:00

标签: objective-c ios cocos2d-iphone audio

我的班级中有以下声明叫做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声明,它可以正常工作(但我当然不能使用我想要的参数!)。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

将isAmbient的参数类型从BOOL*更改为BOOL

答案 2 :(得分:0)

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

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

顺便说一下,你可能想要使用一个普通的BOOL,而不是指向它的指针。这可能是导致崩溃的原因。