I è necessario per sovrascrivere un metodo utilizzando una categoria. Sono anche consapevole dei pericoli con cui lo faccio (questa è una classe privata all'interno di un'altra classe e nessuno scriverà mai un altro metodo di categoria prevalente, quindi nessun comportamento indefinito è garantito). Ho visto un sacco di simile questions ma tutti indirizzo sopprimendo la avvertimento compilatore utilizzando qualcosa di simile:Come si sopprime l'avviso del linker quando si esegue l'override di un metodo di istanza di classe in una categoria
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
// do your override
#pragma clang diagnostic pop
Tuttavia questo lascia ancora il avvertimento linker. È possibile sbarazzarsi di esso per il mio particolare override che considero sicuro, in Xcode 4.6?
Ecco un sample GitHub project che illustra il problema.
Se volessi esporti, perché ne hai bisogno, potremmo forse offrirti soluzioni alternative. il tuo codice di esempio non ci mostra il motivo, in quanto non è ovvio in questo esempio, perché non usi la sottoclasse. – vikingosegundo
@vikingosegundo Voglio sostituire un'implementazione del metodo mantenendo comunque l'accesso alla sua superclasse (e trovo questo un approccio più elegante rispetto al metodo swizzling). Vedi questa domanda per maggiori informazioni: http://stackoverflow.com/questions/15291390/in-objective-c-how-do-you-entely-replace-a-method-of-a-parent-class-while-pre In quella domanda ho chiesto soluzioni alternative al problema. Qui sto solo chiedendo come sopprimere gli avvertimenti effettivi del linker per riferimento futuro. – lms
Non considererei mai la soppressione di un avvertimento elegante. Forse è meno brutto del metodo swizzling ... – vikingosegundo