Wie unterdrücken Sie die Linkerwarnung beim Überschreiben einer Klasseninstanzmethode in einer Kategorie?

8

Ich brauche , um eine Methode mit einer Kategorie zu überschreiben. Ich bin mir auch der Gefahren bewusst, die damit verbunden sind (dies ist eine private Klasse innerhalb einer anderen Klasse und niemand wird jemals eine andere übergeordnete Kategoriemethode schreiben, so dass kein undefiniertes Verhalten garantiert ist). Ich habe viele ähnliche gesehen Fragen , aber alle adressieren die Unterdrückung der Compiler Warnung mit etwas wie diesem:

%Vor%

Dies lässt jedoch immer noch die Linker Warnung. Ist es möglich, es für meine spezielle Überschreibung loszuwerden, die ich für sicher halte, in Xcode 4.6?

Hier ist ein Beispiel-GitHub-Projekt , das das Problem veranschaulicht.

    
lms 08.03.2013, 12:26
quelle

1 Antwort

0

OK, wie ich in meinem Kommentar erklärt habe, was du versuchst zu tun, ist gefährlich und sollte nicht gemacht werden. Ich habe auch vorgeschlagen, die Laufzeitdokumentation zu lesen, um zu verstehen, warum und lernen Sie andere Methoden kennen, um Ihr Ziel zu erreichen. Du solltest das lesen.

In jedem Fall ist eine Alternative zu dem, was Sie tun, die genau die gleichen Ergebnisse erzeugt, ohne so viele rote Flags zu erhöhen, die Laufzeitumgebung zu verwenden, um eine Klasse in der Initialisierungshierarchie "zu überspringen", was effektiv die Oberklasse "überschreibt" Methode.

Hier ist eine Option, wie es gemacht wird, in Ihrem Beispielprojekt ändern Sie die FunkyBranch Klassenimplementierung zu diesem:

%Vor%

Es wird die gleichen Ergebnisse wie Ihre aktuelle Implementierung ohne die Gefahren von dem, was Sie tun, haben.

Bitte denken Sie daran, dass es äußerst wichtig ist, den Funktionszeiger auf den richtigen Typ zu setzen. Ich glaube auch, dass Sie Ihre Vorgehensweise überdenken sollten, anstatt die Laufzeit zu zwingen, etwas zu tun, für das sie nicht vorgesehen ist. In jedem Fall beantwortet dies Ihre Frage.

    
Dario 15.04.2013, 14:37
quelle

Tags und Links