In Java, quando si esegue l'override di un metodo, si consiglia (quasi forzatamente) di aggiungere l'annotazione @Override
. Esiste una convenzione per marcare (sia nei commenti, sia con un altro meccanismo) metodi sovrascritti nel mondo Objective-C?Convenzione Objective-C per metodi sovrascritti
risposta
No. Tutti i metodi in Objective-C vengono inviati tramite la messaggistica di Objective-C, quindi tutti i metodi possono essere sovrascritti. Questa è parte della lingua.
Non c'è alcuna convenzione per contrassegnare questo, neanche. Fa parte del linguaggio che succede, e se dovessi commentare altrimenti sarebbe solo confusione quando lo hai fatto in seguito, accidentalmente o intenzionalmente.
Sono a conoscenza di che, la situazione è la stessa di Java - (quasi) tutte le funzioni sono virtuali, tuttavia vedo ancora il punto per avvertire che stai sovrascrivendo un metodo genitore. Sicuramente farà errori come non chiamare '[super loadView];' più facile da individuare –
Devi controllare la documentazione e leggere il tuo metodo. Alcuni metodi, è importante chiamare super. Alcuni metodi, è fondamentale che tu ** non ** chiami super. In passato, avrei detto che quello che vuoi non è possibile per l'IDE, ma è evidente che Apple può fare quasi tutto ora che controlla il compilatore, il framework e il linguaggio, quindi potrebbe valere la pena di presentare un suggerimento tramite il loro bug reporter. –
(btw, ottima domanda) –
No, non proprio.
Non sembra avere importanza, probabilmente a causa della spedizione dinamica.
Non sono sicuro se Xcode fa questo, ma l'AppCode IDE da JetBrains annota automaticamente i metodi sostituiti con il piccolo blu distintivo di override a margine, in questo modo:
. . oltre a questo (anche mostrato), mi piace anche creare alcuni modelli dal vivo (aka code-snippets in Xcode) per annotare metodi sovrascritti con un tag #pragma. Trovo che aiuta a definire una struttura standard in questo ordine:
- metodi di classe
- inizializzazione & distruzione metodi
- metodi pubblici/protocollo
- Metodi sostituiti
- metodi privati
e con modelli/frammenti di codice in tempo reale posso semplicemente digitare 'override [tab]' e l'IDE crea il tag #pragma per me.
. . forse potresti anche usare OCLint per verificare che questa struttura sia rispettata.
- 1. Generici in metodi sovrascritti
- 2. Riflessione sui metodi sovrascritti dall'interfaccia
- 3. Recupero metodi integrati che sono stati sovrascritti
- 4. ObjectiveC blocca l'equivalente Java
- 5. Esiste una convenzione per mostrare i metodi sottoposti a override nei diagrammi di classi statiche UML?
- 6. Perché C# non si associa correttamente ai metodi sovrascritti generici?
- 7. Convenzione di denominazione per i metodi di estensione Rx?
- 8. Convenzione di denominazione standard per i metodi DAO
- 9. Denominazione convenzione e struttura per classi di utilità e metodi
- 10. Differenza tra NSLog e printf per ObjectiveC
- 11. Convenzioni di denominazione Python per attributi e metodi che devono essere sovrascritti
- 12. come evitare i metodi della superclasse sempre sovrascritti per classe sub in obiettivo - c
- 13. Se i metodi statici non possono essere sovrascritti, come funziona qui (per Java)?
- 14. Implementare protocollo ObjectiveC in rapida
- 15. convenzione Java sul riferimento ai metodi e le variabili
- 16. C++ 11 Elimina sovrascritti Metodo
- 17. Convenzione AngularJS per più file
- 18. Come dividere newline da NSString in ObjectiveC
- 19. Come riorganizzare il codice con metodi sovrascritti in alto in Android Studio?
- 20. Uso della parola chiave 'super' quando si accede a metodi di superclasse non sovrascritti
- 21. Esiste una convenzione di denominazione consigliata per i file che contengono solo funzioni/metodi di estensione?
- 22. Qual è una buona convenzione di denominazione per i metodi che richiedono un'azione condizionale?
- 23. Perché lo studio visivo rompe la convenzione di denominazione per i metodi in C#?
- 24. Esiste un metodo per contrassegnare (in fase di compilazione) metodi "sovrascritti" le cui firme non corrispondono alla firma di base?
- 25. Come visualizzare i binding chiave sovrascritti/ombreggiati?
- 26. Convenzione di nomi per l'eliminazione dei dati in C++
- 27. Android Ripple Effect sovrascritti da Stato Selected
- 28. Che cosa significa restituire zero per convenzione?
- 29. Convenzione URL per intervallo di date
- 30. OpenGL: convenzione per quale asse è "su"?
Domanda correlata: [equivalente Objective-C di override in C#] (http://stackoverflow.com/questions/1034554/objective-c-equivalent-of-override-in-c-sharp) –