2010-12-14 2 views
11

Objective-C는 메서드 오버로드를 지원하지 않습니다.
왜?
할 수 있겠지만 애플은 그것을 구현하지 않기로 결정 했습니까? 또는 Objective-C의 동적 특성으로 인해 실행 가능하지 않습니까?Objective-C가 메서드 오버로딩을 지원하지 않는 이유는 무엇입니까?

메소드 오버로드가 컴파일 된 언어 (Java, C#)에서 수행 될 수 있고 해석 된 언어 (Ruby, Python)에서 수행 될 수 없다는 인상을 받았습니다.
몇 가지 사실입니까?

답변

26

컴파일 된 언어와 해석 된 언어가 아닌 정적으로 입력 된 형식 (Java, C#)과 동적 형식이 지정된 형식 (Ruby, Python, Objective-C) 간의 차이점이 있습니다. 동적 유형 지정 언어에서 유형 정보는 런타임까지 매우 자주 알려지지 않습니다. 런타임에는 Objective-C에 모든 오브젝트가 정적으로 id으로 입력됩니다.

동적 유형 지정 OO 언어의 핵심 개념은 보내려는 메시지에 응답하는 동안 개체 유형을 신경 쓰지 말아야한다는 것입니다. 그래서 유형에 기반한 오버로딩은 바로 그면에서 비행 할 것입니다.

+1

가설 적으로 메소드 오버로드를 지원하는 동적 유형 지정 언어를 사용할 수 있습니까? 그런 언어가 지금 존재합니까? 가짜로 – Chiron

+1

? 확실한; 당신이 거기에 가고 싶다면 (그리고 기존의 코딩 표준에서 완전히 벗어나고 싶다면) Objective-C의 위에도 할 수 있습니다. 정말로 "그렇게 힘들지도 않습니다"(어쨌든 "하드"의 일부 가치에 대한) 것입니다. – bbum

+0

척, 나는 당신의 대답을 이해하지 못했습니다. 너는 너가 말하려고하는 것을 설명해 줄 수 있니? – Nitish