2010-05-24 5 views
2

왜이 오류가 발생하지 않고 컴파일 되었습니까?중복 메서드 이름 - Objective-c

@interface ObjectTest : NSObject { 

} 
-(void)iAmADoubleMethod; 
-(void)iAmADoubleMethod; 
@end 

@implementation ObjectTest 
-(void)iAmADoubleMethod { 
    NSLog(@"IAmADoubleMethod"); 
} 
@end 

내가 작업하고있는 프로젝트에서이 문제가 발생했습니다. 저는 C++ 배경에서 왔습니다. 그래서 적어도 이것에 대한 경고를 얻을 것이라고 생각했습니다. 나는 그것이 왜 준수 하는지를 알고 싶을뿐 아니라이 코드가 어떤 문제를 일으킬 수 있는지 알고 싶습니까?

감사합니다.

+0

올바른지 확신 할 수 없기 때문에이 내용을 주석으로 표시하겠습니다. C 표준은 단 하나의 정의가있는 한 여러 개의 선언을 가질 수 있기 때문에이 방법이 효과적이라고 생각합니다. 예를 들어 많은 파일에서 int x를 선언 할 수 있지만 한 곳에서 변수의 공간 만 정의 할 수 있습니다. –

답변

10

방금 ​​두 번 선언하는 것입니다. 선언문은 충돌하지 않으므로 문제가되지 않습니다. 평범한 C 또는 C++ 프로그램에서 여러 번 함수를 선언 한 것과 같습니다.

+0

나는 그렇게 생각했다. + +1 –

+0

고마워, 어쩌면 어느 날 나는 표준을 읽을 것이다. 아마 :) – NixonsBack