La convenzione con le categorie prevede l'inclusione di un prefisso durante l'estensione delle classi Apple. Per esempio:Qual è la convenzione per il prefisso di categorie con parole magiche?
[string XXDataUsingUTF8];
(Sì, è un esempio stupido Just Go With It.).
Cosa sono meno chiare su è ciò che la convenzione è quando l'identificatore inizia con copy
, set
, init
oppure new
.
Per esempio:
[request setHTTPBodyWithKeyValues: keyValues];
Se posso aggiungere il mio prefisso, questo non segue più le "setter iniziano con set" convenzione.
[request XXSetHTTPBodyWithKeyValues: keyValues];
D'altra parte, se aggiungo il prefisso dopo il set, non è più davvero un prefisso:
[request setXXHTTPBodyWithKeyValues: keyValues];
Questo non è molto importazione con set
, ma penso che diventa più importante con init
, copy
, ecc.
Apple ha documentato questo ovunque? Cosa c'è in comune?
non ho visto alcun linee guida ufficiali su questo, ma nell'interesse di non confondere ARC o l'analizzatore statico LLVM, o qualsiasi altro strumenti o persone che leggono il tuo codice, opterei per mantenere intatto il prefisso convenzionale all'inizio del selettore. Personalmente, utilizzo un trattino basso nei nomi dei metodi di estensione delle categorie, poiché i metodi "reali" non ne contengono mai uno, preservando così l'unicità del "prefisso". Nel tuo esempio sarebbe 'setXX_HTTPBodyWithKeyValues:'. Nei metodi di estensione basati su non convenzioni, diventa semplicemente "XX_myMethodName". – pmdj
Immagino che questa sia davvero l'unica * pratica * risposta, non è vero? Grazie per aver sottolineato l'ovvio. :) –
Punto molto interessante! Alcune persone amano postfix la loro stringa "namespace": 'setHTTPBodyWithKeyValues_XX:' che non è più carina. –