Frage

Hintergrund:

Ich bin eine Hierarchie von Verbund Wörterbuch Datenstrukturen in Objective-C zu schaffen, und bin zu erben von NSMutableDictionary so dass diese Klassen überall eine NSDictionary / NSMutableDictionary für genannt wird, verwendet werden. (Nur so Leute nicht denken, ich das Rad neu zu erfinden bin, belegen je einen CFMutableDictionaryRef , sowie einige zusätzliche Struktur, die die Schlüssel in sortierter Reihenfolge speichert, Auftrag, etc.) mit Apples Dokumentation Entsprechend habe ich die notwendige NSDictionary Primitiven und NSMutableDictionary Primitiven , die alle anderen Methoden in diesen Klassen verwenden.

Ziel:

Da ich danach streben, die APIs für meinen Rahmen zu dokumentieren, so vollständig wie vernünftig ist, würde Ich mag die Dokumentation für meine benutzerdefinierte Unterklassen (erzeugt durch Doxygen) Beschreibungen der häufigsten Methoden der NS (Mutable) Wörterbuch enthalten, so dass die Nutzer auf einer anderen Seite nicht nur zu den Methoden suchen müssen, dass eine bestimmte Benutzerwörterbuch erbt unverändert. Darüber hinaus manchmal muss die Dokumentation die verschiedenen Funktionen durch die überschrieben primitiven Methoden verursacht reflektieren, obwohl das Verfahren der Umsetzung von NS (Mutable) Wörterbuch unverändert ist.

Problem:

Ich bekomme keine Fehler / Warnungen, wenn nur die überschriebenen Methoden dokumentiert sind. Wenn ich Kommentare hinzufügen, die Methoden dokumentieren geerbt, klagt Doxygen (und nicht die Dokumentation erzeugen), es sei denn ich eine Methode Prototyp der Header-Datei hinzuzufügen. Wenn ich einen Prototyp hinzufügen, gibt der Compiler eine Warnung, dass die Umsetzung abgeschlossen ist, da sie für die deklarierte Methode nicht eine Methodendefinition enthalten. Offensichtlich ist dies ein Fall, in dem das Verfahren in der übergeordneten Klasse vorhanden ist, aber der Compiler ist ein Pedant zu sein über deren Umsetzung, da der Prototyp im Wesentlichen in der Unterklasse neu deklariert wird.

Fragen:

  • Ist es möglich, Xcode / gcc Unterdrückungs „Methodendefinition für‚X‘nicht gefunden“ Warnungen für Methoden von einer übergeordneten Klasse geerbt zu machen?
  • Ist es möglich, Doxygen zu zwingen Dokumentation für ein Verfahren zu schaffen, für die keine delaration existiert? Ich versuchte, den \fn Befehl zu verwenden, bekam aber die gleichen Ergebnisse.
  • Ist es möglich, Doxygen zu täuschen zu denken, dass die Dokumentation ich eigentlich schreiben gilt für NSMutableDictionary, noch haben sie für alle meine benutzerdefinierte Unterklassen erscheinen?

Edit:

So weit ich das beurteilen kann, ist die Antwort auf die erste Frage ist ja und nein. Technisch mit der -Wno-protocol Option (oder deaktivieren Sie die „Incomplete Objective-C-Protokolle“ Warnung in den Xcode Build-Einstellungen) funktioniert Ursache GCC Kompilierung-Warnungen über Klassen zu unterdrücken, erscheinen nicht alle Protokollverfahren zu implementieren. Dahinter verbergen sich jedoch das Problem für Klassen, die wirklich nicht alle notwendigen Methoden implementieren. Für einen Rahmen aufzubauen, die Stampf Verwendung von Protokollen macht, das ist wirklich keine Option. currständig, GCC scheint nicht über die Methoden aus einer verknüpften (Nicht-Quelle) übergeordneten Klasse geerbt zu kennen.

War es hilfreich?

Lösung

Soweit ich weiß, Antwort auf Ihre drei Fragen: no.

Ich möchte Ihre Aufmerksamkeit auf die Tatsache lenken, dass Apple-Dokumentation nicht geerbten Methoden in Subklassen Dokumentation nicht dokumentiert werden.

Darüber hinaus NSDictionary und NSMutableDictionary sind nicht so ungewöhnlich, dass eine Erinnerung an ihren am häufigsten verwendeten Methoden benötigen. Für mich ist ein Link zu bestehenden Dokumentation, wie Sie bereits haben, ist ausreichend.

über Ihren Punkt bestimmten Verhalten dieser gemeinsamen Methoden auf Ihrer Unterklasse, würde ich fügen Sie einfach einen speziellen Abschnitt in den Ausführliche Beschreibung Kapitel.

Wie auch immer, wäre eine mögliche Abhilfe sowohl eine Erklärung und eine Umsetzung Ihrer geerbte Methoden zu geben sein. Aber es ist ein bisschen übertrieben nur zu Dokumentationszwecken:

- (NSArray *) allValues
{
    return [super allValues];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top