Questo è un class extension. Puoi usarlo per fare dichiarazioni che non vuoi essere nel file .h
.
Questo è stato utilizzato da molti sviluppatori, anche prima, che hanno aggiunto manualmente l'estensione nel file .m
. Quindi credo che Apple abbia incluso questo modello perché è ampiamente utilizzato ed è considerato una buona pratica.
In effetti, il file .h
deve essere utilizzato solo per rendere dichiarazioni che verranno utilizzate da altri file. Potrebbe essere necessario dichiarare alcune proprietà, metodi o costanti che verranno utilizzati solo all'interno del file .m
. Per quelle dichiarazioni, è meglio farle nell'estensione di classe.
Quindi, per rispondere alle vostre domande:
- È questo @interface in più ... necessaria se ho un file .h separata?
No, non è obbligatorio ma è una buona pratica.
- Perché questo non presentarsi in iOS 5 pre progetti?
Anche se questa era una pratica comunemente usata, non è stato incluso nel modello.
- Posso usare questo invece di avere un file .h separata?
No. L'estensione di classe non sostituisce il file .h
dove si deve dichiarare il interfaccia "pubblico" della classe.
- Qual è la migliore pratica per questo futuro?
Si dovrebbe mettere nel prolungamento della classe tutte le dichiarazioni che non hanno bisogno di essere visibile al di fuori del file .m
.
per l'incapsulamento. – janusbalatbat
possibile duplicato di [Differenza tra la definizione di @interface nel file .h e .m] (http://stackoverflow.com/questions/3967187/difference-between-interface-definition-in-h-and-m-file) –