Справочная информация:
Я создаю иерархию составных структур данных словаря в Objective-C и наследую от NSMutableDictionary , поэтому эти классы можно использовать везде, где требуется NSDictionary / NSMutableDictionary. (Чтобы люди не думали, что я заново изобретаю колесо, каждый из них использует CFMutableDictionaryRef , плюс некоторую дополнительную структуру, которая хранит ключи в отсортированном порядке, порядке вставки и т. Д.) В соответствии с документацией Apple Я переопределил необходимые примитивы NSDictionary и примитивы NSMutableDictionary , которые используются всеми другими методами в этих классах.
Цель:
Поскольку я стремлюсь документировать API для моей платформы настолько полно, насколько это разумно, я бы хотел, чтобы документация для моих пользовательских подклассов (созданная Doxygen) включала описания наиболее распространенных методов NS ( Изменяемый) словарь, поэтому пользователям не нужно просматривать другую страницу только для методов, которые конкретный пользовательский словарь наследует без изменений. Кроме того, иногда документация должна отражать различные функциональные возможности, вызванные переопределенными примитивными методами, хотя реализация метода не отличается от NS (Mutable) Dictionary.
Проблема:
Я не получаю ошибок / предупреждений, когда задокументированы только переопределенные методы. Если я добавлю комментарии, которые документируют унаследованные методы, Doxygen будет жаловаться (и не будет выдавать указанную документацию), если я не добавлю прототип метода в файл заголовка. Если я добавляю прототип, компилятор выдает предупреждение о том, что реализация завершена, поскольку он не включает определение метода для объявленного метода. Очевидно, что это тот случай, когда метод существует в родительском классе, но компилятор мешает его реализации, поскольку прототип по существу повторно объявлен в подклассе.
Вопросы:
- Можно ли заставить Xcode / gcc подавлять «определения методов для« X »not found» предупреждений для методов, унаследованных от родительского класса?
- Можно ли заставить Doxygen создавать документацию для метода, для которого нет деларации? Я пытался использовать команду
\fn
, но получил те же результаты.
- Можно ли обмануть Doxygen, думая, что документация, которую я пишу, действительно применима к NSMutableDictionary, и все же она отображается для всех моих пользовательских подклассов?
Edit:
Насколько я могу судить, ответ на первый вопрос - и да, и нет. Технически, с помощью опции -Wno-protocol
(или снятия флажка с предупреждением «Incomplete Objective-C Protocols» в настройках сборки Xcode) делает заставляет GCC подавлять предупреждения времени компиляции о классах, которые не кажется, чтобы реализовать все методы протокола. Однако это маскирует проблему для классов, которые действительно не реализуют все необходимые методы. Для построения структуры, которая использует множество протоколов, это действительно не вариант. В настоящее время GCC, похоже, не знает о методах, унаследованных от связанного (не исходного) родительского класса.