Pergunta

Fundo:

Estou criando uma hierarquia de estruturas de dados de dicionário compostas em Objective-C, e estou herdando de NSMutableDictionary assim que estas classes podem ser usadas em todos os lugares um NSDictionary / NSMutableDictionary é chamado para. (Apenas para que as pessoas não acho que eu estou reinventando a roda, cada um usa um CFMutableDictionaryRef , além de alguma estrutura adicional que armazena as chaves na ordem de classificação, a ordem de inserção, etc.) de acordo com a documentação da Apple, eu tenho substituído o necessário NSDictionary primitivas e NSMutableDictionary primitivas que todos os outros métodos nessas classes de usar.

Objectivo:

Uma vez que eu me esforço para documentar as APIs para o meu quadro tão completamente quanto é razoável, eu gostaria que o documentação para minhas subclasses personalizados (gerada pelo Doxygen) para incluir as descrições dos métodos mais comuns de NS (Mutante) Dictionary, assim os usuários não tem que olhar para outra página apenas para os métodos que um determinado herda dicionário personalizado inalterado. Além disso, por vezes, a documentação deve refletir as diferentes funcionalidade causada pelos métodos primitivos substituídos, embora a implementação do método é inalterado desde NS (Mutante) Dictionary.

Problema:

Eu recebo nenhum erro / avisos quando apenas os métodos substituídos são documentados. Se eu adicionar comentários que os métodos de documentos herdados, Doxygen reclama (e não produzirá disse documentação) a menos que eu adicione um protótipo método para o arquivo de cabeçalho. Se eu adicionar um protótipo, o compilador emite um aviso de que a implementação estiver concluída, uma vez que não incluem uma definição de método para o método declarado. Obviamente, este é um caso em que o método existe na classe pai, mas o compilador é ser um defensor sobre a implementação desde o protótipo é essencialmente declarado novamente na subclasse.

Perguntas:

  • É possível fazer Xcode / gcc suprimir "definição de método para 'X' não encontrado" avisos para métodos herdados de uma classe pai?
  • É possível forçar Doxygen para criar documentação para um método para o qual não existe delaration? Eu tentei usar o comando \fn, mas tem os mesmos resultados.
  • Será que é possível enganar Doxygen em pensar que a documentação que eu escrevo realmente se aplica a NSMutableDictionary, ainda que ele apareça para todas as subclasses meu costume?

Editar:

Tanto quanto eu posso dizer, a resposta à primeira pergunta é sim e não. Tecnicamente, usando o -Wno-protocol opção (ou desmarcando o aviso de "Incomplete Objective-C Protocolos" nas configurações de compilação do Xcode) não causa GCC suprimir avisos de tempo de compilação sobre as classes que não aparecem para implementar todos os métodos de protocolo. No entanto, isso mascara o problema para classes que realmente não implementar todos os métodos necessários. Para a construção de uma estrutura que faz uso alçada de protocolos, que não é realmente uma opção. CurrSuavemente, GCC não parece saber sobre métodos herdados de um (não-source) classe ligadas pai.

Foi útil?

Solução

Tanto quanto eu sei, resposta às suas três perguntas é: Não.

Gostaria de chamar a atenção para o fato de que a documentação Apple não documentar métodos herdados na documentação subclasse.

NSDictionary Além disso e NSMutableDictionary não são tão incomum precisar de um lembrete de seus métodos mais comuns. Para mim, um link para a documentação existente, como você já tem, é suficiente.

Sobre o seu ponto de comportamento específico destes métodos comuns em sua subclasse, gostaria apenas de inserir uma seção dedicada no Descrição detalhada capítulo.

De qualquer forma, uma possível solução seria dar tanto uma declaração e uma implementação de seus métodos herdados. Mas é um pouco exagero apenas para fins de documentação:

- (NSArray *) allValues
{
    return [super allValues];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top