Perche in Objective-C le classi usano prefissi tipo NS?'

di il
2 risposte

Perche in Objective-C le classi usano prefissi tipo NS?'

Ciao a tutti,
ho visto che le classi di Objective-C usano dei prefissi ad esempio NSArray, NSString ecc. Come mai questa scelta, non sarebbe più comodo String, Array ecc? E cosa significano?

2 Risposte

  • Re: Perche in Objective-C le classi usano prefissi tipo NS?'

    Per distinzione del namespace. la stessa logica di prefisso viene utilizzata in molti progetti di grandi dimensioni (gtk, x, ecc.) ...i

    edit:
    da wiki
    Oggi Objective C è spesso usato in tandem con librerie fisse di oggetti standard (spesso denominati "kit" o "framework") come Cocoa o GNUstep. Queste librerie sono spesso fornite assieme al sistema operativo: le librerie GNUstep sono parte della collezione di software GNU e a volte presenti in alcune distribuzioni Gnu/Linux e Cocoa di MacOS X. Il programmatore non è obbligato ad ereditare le funzionalità della classe base esistente (NSObject). Objective C permette la dichiarazione di nuove classi base che non ereditino nessuna delle funzionalità preesistenti. Originariamente gli ambienti di programmazione basati su Objective C offrivano la classe Object con alcune funzionalità di base, ma con l'introduzione di OpenStep, NeXT ha creato una nuova classe base chiamata NSObject che offriva caratteristiche aggiuntive oltre a quelle di Object. Quasi tutte le classi di Cocoa ereditano da NSObject.

    La rinominazione non è servita solo per differenziare i nuovi comportamenti delle classi nel nuovo framework, ma ha consentito al codice che ancora usava la classe Object di coesistere (sebbene con alcune limitazioni) nello stesso run-time system. Nello stesso tempo l'introduzione del prefisso di due lettere è diventato una sorta di surrogato alla mancanza in Objective C degli spacename (o Namespaces che dir si voglia). Usare un prefisso per creare in identificatore di package informale è diventata un'abitudine standard nella comunità di programmatori Objective C.
  • Re: Perche in Objective-C le classi usano prefissi tipo NS?'

    Ciao ixamit,
    esatto, il problema è proprio che in Objective-C mancano i namespace per cui avendo a che fare con migliaia di classi presenti nei vari framework ci si scontra col problema della collisione dei nomi.

    Per quanto riguarda il significato di NS quoto le risposte di toti81 e Toki:

    toti81 ha scritto:


    NS deriva da NEXTSTEP, l'azienda di Steve Jobs (molto prima di apple) dalla quale è nato obj-c, e quasi per una forma di rispetto che ora si mette il prefisso NS prima di molti comandi

    Toki ha scritto:


    Il NeXTSTEP, fu il sistema operativo della NeXT da cui derivò Mac OS X.
    Cronologicamente Steve Jobs, fondò prima la Apple, poi fu allontanato dal suo stesso amministratore delegato e fondò la NeXTSTEP Computer.
    In seguito fu la stessa Apple in grave crisi che per risollevarsi fece rientrare Steve Jobs e acquisì la Next Computer.
    A questo link si possono vedere i framework e le classi di iOS.

    I framework sono decine (quasi 50) e ognuno contiene decine di classi (Foundation ne contiene circa 200), per cui le classi sono migliaia, quindi quando nel tuo progetto crei una classe ti si pone il problema di non usare un nome già usato. L' uso dei prefissi risolve il problema.

    È una buona pratica attribuire un prefisso anche alle proprie classi, tanto che quando apri un nuovo progetto XCode ti propone di indicare un nome di un prefisso.

    Sapete se esiste qualche convenzione da seguire quando si sceglie un prefisso per le proprie classi?
Devi accedere o registrarti per scrivere nel forum
2 risposte