문제

배경:

Objective-C에서 복합 사전 데이터 구조의 계층 구조를 만들고 있으며 nsmutabledictionary 따라서 이러한 클래스는 NSDictionary/nsMutabledictionary가 요구되는 모든 곳에서 사용할 수 있습니다. (사람들은 내가 바퀴를 재창조한다고 생각하지 않도록 cfmutabledictionaryref, Apple의 문서에 따라 키를 정렬 순서, 삽입 순서 등으로 저장하는 몇 가지 추가 구조와 필요한 것을 무시했습니다. nsdictionary 프리미티브 그리고 nsmutabledictionary 프리미티브 해당 수업의 다른 모든 방법이 사용됩니다.

목표:

합리적인 것처럼 내 프레임 워크의 API를 문서화하려고 노력하기 때문에 내 사용자 정의 서브 클래스에 대한 문서 (Doxygen에 의해 생성) NS (Mutable) 사전의 가장 일반적인 방법에 대한 설명을 포함하므로 사용자는 특정 사용자 정의 사전이 변경되지 않은 방법을 다른 페이지를 볼 필요가 없습니다. 또한, 방법 구현은 NS (Mutable) 사전에서 변경되지 않지만, 문서는 재정의 원시 방법으로 인한 다른 기능을 반영해야합니다.

문제:

재정의 메소드 만 문서화되면 오류/경고가 없습니다. 문서 상속 메소드가있는 주석을 추가하면 Doxygen은 헤더 파일에 메소드 프로토 타입을 추가하지 않는 한 불만을 제기하고 (문서화를 생성하지 않음). 프로토 타입을 추가하면 컴파일러는 선언 된 메소드에 대한 메소드 정의가 포함되어 있지 않기 때문에 구현이 완료되었다고 경고를 발행합니다. 분명히, 이것은 메소드가 상위 클래스에 존재하는 경우이지만, 컴파일러는 프로토 타입이 본질적으로 서브 클래스에서 재고되기 때문에이를 구현하는 데 어려움을 겪고 있습니다.

질문:

  • 부모 클래스에서 상속 된 메소드에 대한 'X'에 대한 'X'에 대한 "메소드 정의"Xcode/GCC를 억제 할 수 있습니까?
  • Doxygen이 쇠퇴하지 않는 방법에 대한 문서화를 만들도록 강요 할 수 있습니까? 나는 그것을 사용하려고했다 \fn 명령이지만 동일한 결과를 얻었습니다.
  • 내가 쓰는 문서가 실제로 nsmutabledictionary에 적용되지만 내 맞춤형 서브 클래스에 나타나는 것으로 생각하기 위해 Doxygen을 속일 수 있습니까?

편집하다:

내가 알 수있는 한, 첫 번째 질문에 대한 답은 예와 아니오입니다. 기술적으로, 사용 -Wno-protocol 옵션 (또는 Xcode 빌드 설정에서 "불완전한 목표 C 프로토콜"경고를 선택 취소)) 하다 GCC가 모든 프로토콜 방법을 구현하지 않는 클래스에 대한 컴파일 타임 경고를 억제하게됩니다. 그러나 이것은 실제로 수업의 문제를 가려줍니다. ~하지 않다 필요한 모든 방법을 구현하십시오. 프로토콜을 사용하는 프레임 워크를 구축하기 위해서는 실제로 옵션이 아닙니다. 현재 GCC는 링크 된 (비 소스) 상위 클래스에서 상속 된 방법에 대해 알지 못하는 것 같습니다.

도움이 되었습니까?

해결책

내가 아는 한, 세 가지 질문에 대한 답변은 다음과 같습니다.

Apple 문서가 서브 클래스 문서에 상속 된 방법을 문서화하지 않았다는 사실에주의를 기울이고 싶습니다.

더구나 NSDictionary 그리고 NSMutableDictionary 가장 일반적인 방법을 상기시키는 것은 드문 일이 아닙니다. 저에게 기존 문서에 대한 링크가 이미 가지고 있듯이 충분합니다.

서브 클래스에서 이러한 공통 방법의 특정 행동에 대한 귀하의 지점에 대해서는 전용 섹션을 상세 설명 장.

어쨌든, 가능한 해결 방법은 상속 된 방법의 선언과 구현을 모두 제공하는 것입니다. 그러나 문서화 목적을 위해 약간 과잉입니다.

- (NSArray *) allValues
{
    return [super allValues];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top