2013-03-21 6 views
13

Sto scrivendo un'app per iOS, "Best Korea". Il nome della mia organizzazione è "Srsly.co". Scriverò delle librerie "News" riutilizzabili che utilizzerò nelle mie app.Come si usano gli spazi dei nomi nel codice obiettivo-c di iOS?

Ogni app iOS avrà le proprie costanti per l'intera app in un file .h e il codice della libreria avrà le sue costanti anche nei file di intestazione. Avrò anche dei test per ciascuno di questi progetti.

È questo il modo standard di fare le cose?

In Ruby, Python, Java, ecc, mi piacerebbe impostare gli spazi dei nomi in queste righe:

co.srsly.bestkorea 
co.srsly.bestkorea.test 
co.srsly.newslib 
co.srsly.newslib.test 

Per quanto posso vedere, il modello di Objective-C è per ogni sviluppatore di scegliere due o tre lettere maiuscole e prefisso ogni nome di classe con loro.

Quindi, nel mio caso, sto pensando io sceglierei BK come prefisso del nome di classe app e NL per il codice di notizie lib? Sto pensando a questo nel modo giusto?

MODIFICA: Sto considerando che non utilizza affatto il namespace nel mio codice applicazione come discusso here.

+2

Sì, che suona ragionevole. – abellina

risposta

33

Hai ragione che Objective-C non ha il supporto integrato per gli spazi dei nomi e la soluzione comune è l'uso di prefissi maiuscoli per ogni classe. Nota che Apple has stated che i prefissi di due lettere sono riservati per il loro uso, quindi dovresti usare tre prefissi di lettere per le tue classi. Altrimenti, il tuo approccio suggerito è la cosa normale da fare.

+8

+1 per il prefisso di due lettere info – borrrden

+2

Sì, questa era una novità anche per me. – abellina

+0

Ah ah, quindi seguendo l'esempio in quella pagina, potrei usare ** SBK ** come prefisso del codice app. – Dogweather

2

Non esiste alcun NameSpace in Objective-C come ci si aspetta da Java.

Objective-C utilizza prefisso di classe come NS, UI, CG, CF ecc. Per rimuovere in modo sicuro la collisione di spazio dei nomi.

E sarebbe meglio usare il prefisso di 3 lettere per la classe.

Si consiglia di leggere questo: What is the best way to solve an Objective-C namespace collision?

Problemi correlati