2012-12-09 4 views
2

Objective-C에서 클래스 메서드 (멤버 변수 또는 인스턴스 메서드 없음) 만 포함하는 클래스가 있으면 클래스 헤더 파일 (.h)에서 클래스 메서드를 정의하고 .m 파일?헤더의 클래스 메서드 구현

+1

은 "모범 사례"가 아니지만 시도하지 않는 이유는 무엇입니까? –

+1

할 수 있지만 할 수는 없습니다. 목표 -C는 C++이 아닙니다 (다행스럽게도). –

+0

글쎄, 그들의 부작용은 그렇게하는 것입니까? Xcode의 메소드 인식을 깨뜨릴 수 있습니까? ARC 친화적입니까, 해킹입니까? 애플은 그것에 대해 아무 말도하지 않았습니까? –

답변

3

수 있습니다.하지만 기본적으로해서는 안됩니다. @implementation을 헤더에 넣을 수는 있지만 반대 개념이기 때문에 의도하지 않은 부작용이있을 수 있습니다. C++ 또는 다른 언어와 동일합니다 (예 : 헤더가 # 앞에 오도록 #include 할 수없는 것) include, 그래서 당신은 정상적인 네임 스페이스를 가질 수 없다).

Objective-C의 모범 사례는 설명서와 함께 헤더 파일에 선언 만 보관하는 것입니다. 문서는 일반적으로 매우 장황합니다 (잘 작성된 경우). 이는 이미 헤더에 내용이 약간 포함되어 있습니다. 코드 상단에 코드를 추가하는 것이 너무 많습니다.

클래스 또는 인스턴스가 아닌 Objective-C 메소드의 인라이닝이 없다는 점도 기억하십시오. 이것이 헤더 파일에 코드를 삽입하는 큰 이유 중 하나입니다. C/C++에서는 상대적으로 인기있는 방법입니다. 물론 Objective-C 헤더 파일에 정적 함수를 넣을 수 있으므로 코드를 그런 식으로 구현할 수는 있지만 바람직하지 않은 디자인이 될 수 있습니다. 예를 들어 클래스 메서드는 네임 스페이스를 사용하여 일반적으로 이점을 취하는 것이 현명합니다 .