2011-12-06 6 views
1

나는이 GameManager라는 내 수업 시간에 다음과 같은 선언 :목표 C

-(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 선언을 해제해도 제대로 작동하지만 물론 원하는 매개 변수를 사용할 수 없습니다. 당신은이 같은 선언에 일반 BOOL하지 BOOL* 사용해야합니다

답변

2

:

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

이것은 선언이 아닙니다. – sidyll

+0

@sidyll 좋은 지적! (결정된). – dasblinkenlight

+0

감사합니다 똑바로 생각하지 못했습니다! 당신을 업 그레 이드하기 위해 더 많은 담당자가 필요합니다. – Eric

1

변경 BOOL-BOOL*에서 isAmbient의 매개 변수 유형.

0

첫 번째 코드는 선언이 아니며 정의입니다. 선언은 서명이며 세미콜론으로 끝나며 헤더 파일에 배치됩니다 (일반적으로).

그런 다음 클래스 헤더 파일을 선언과 함께 포함시켜야 다른 클래스가 메소드를 인식 할 수 있습니다. 이렇게하면 "메소드를 찾을 수 없음"문제가 해결됩니다.

그런데, 아마도 포인터가 아닌 일반 BOOL을 사용하려고했을 것입니다. 이것은 충돌의 원인 일 수 있습니다.

+0

감사합니다 똑바로 생각하지 못했습니다! 너를 upvote하기 위해 더 많은 담당자가 필요하다. – Eric