我的班级中有以下声明叫做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声明,它可以正常工作(但我当然不能使用我想要的参数!)。
答案 0 :(得分:2)
您应该在声明中使用普通BOOL
,而不是BOOL*
,如下所示:
-(void)playBackgroundTrack:(NSString*)trackFileName isAmbient:(BOOL)ambient;
答案 1 :(得分:1)
将isAmbient的参数类型从BOOL*
更改为BOOL
。
答案 2 :(得分:0)
第一段代码不是声明,而是一个定义。声明是签名,以分号结尾,并放在头文件中(通常)。
然后,您需要在声明中包含该类头文件,以便您的其他类知道该方法存在。这将解决“找不到方法”的问题。
顺便说一下,你可能想要使用一个普通的BOOL,而不是指向它的指针。这可能是导致崩溃的原因。