IPB     Il futuro di Tevac dipende da te!  

Benvenuto Visitatore ( Log In | Registrati )

Il TevacPhoto Contest di Luglio: TERRA!!

  · · · · · · · · · · · ·
Reply to this topicStart new topic
> Puntare ad oggetti differenti con la stessa variabile, (non sono certo di capire bene cosa sto facendo)
nutsmuggler
messaggio 28 Mar 2008, 16:48
Messaggio #1


Level 6/11
******

Gruppo: Forum User +
Messaggi: 1.364
Iscritto il: 1-September 04
Da: Verona
Utente Nr.: 2.260



Salve a tutti.
ho una confessione imbarazzante: so cosa sono i puntatori, ma non li ho mai digeriti del tutto icon_smile.gif
Visto che Marco è in giro approfitto della sue esperienza per porvi un quesito a carattere abbastanza teorico. In questo caso non ho problemi o bug, ma voglio essere certo di capire cosa sto facendo.
Sto creando un'applicazione a carattere musicale, che contiene un parser testuale; no uso la GC. Il parser, come nelle migliori famiglie, passa una stringa carattere per carattere e immagazzina dati secondo la necessità. Sto cercando di essere più "MVC" possibile: il parser registra i dati su un oggetto "brano", che contiene oggetti "musicblock" che contengono oggetti "Nota", ecc.
Il mio parser di tanto in tanto chiude un musicblock per aprirne un altro; per questo il parser dispone di una variabile di istanza chiamata "openMusicBlock", che uso proprio per puntare al music block aperto. Questo è il frammento che chiude un musicblock, lo inserisce nel brano ("tune") e ne apre un altro; openMusicBlock è un'istanza di DBNMusicBlock

CODICE
[openMusicBlock setEndBar:bar];
[openMusicBlock setRepetitions:repetitions];
[tune appendObject:openMusicBlock];
[openMusicBlock release];
    
DBNMusicBlock *newMusicBlock = [[DBNMusicBlock alloc] init];
[newMusicBlock setRepetitions:[NSNumber numberWithInt:1]];
[newMusicBlock setKey:[tune key]];
[newMusicBlock setMode:[tune mode]];
    
openMusicBlock = newMusicBlock;


Cosa mi dite, tutto regolare? Non ho rilasciato un'istanza di troppo, oppure sì?
La routine funziona bene, ma vi chiedo conferme perché sono un po' confuso...
Commenate, commentate,
Davide



--------------------
Vieni a trovarmi sul mio blog e su flickr.
Go to the top of the page
 
+Quote Post
Marco Coïsson
messaggio 28 Mar 2008, 18:32
Messaggio #2


Prediction is very difficult; especially of the future (N. Bohr)
***********

Gruppo: Supporter
Messaggi: 8.995
Iscritto il: 18-May 03
Da: Torino
Utente Nr.: 65



Direi che va tutto bene, non hai rilasciato un'istanza di troppo perché il retainCount di openMusicBlock è stato incrementato quando hai aggiunto l'oggetto a cui punta a tune; quando chiami
CODE
[openMusicBlock release]

l'oggetto non viene distrutto, perché è ancora "trattenuto" da tune, ma "liberi" la variabile openMusicBlock.
In questo modo, non hai nessun bisogno di dichiarare newMusicBlock; fai semplicemente:
CODE
[openMusicBlock setEndBar:bar];
[openMusicBlock setRepetitions:repetitions];
[tune appendObject:openMusicBlock];
[openMusicBlock release];

openMusicBlock = [[DBNMusicBlock alloc] init];
[openMusicBlock setRepetitions:[NSNumber numberWithInt:1]];
[openMusicBlock setKey:[tune key]];
[openMusicBlock setMode:[tune mode]];


Questo ti permette di mettere tutto dentro un ciclo, ad esempio, "riciclando" sempre la stessa variabile openMusicBlock, che potrebbe persino essere locale (persino all'interno dello scope del ciclo stesso), dal momento che creazione (alloc) e distruzione (release) sono bilanciati.


--------------------
Marco Coïsson
http://homepage.mac.com/marco_coisson

X come Macintosh, la nuova serie
Nel numero di giugno-luglio: Passo incerto; Un Mac mancato: hardware; Un Mac mancato: software.
Go to the top of the page
 
+Quote Post
nutsmuggler
messaggio 28 Mar 2008, 18:46
Messaggio #3


Level 6/11
******

Gruppo: Forum User +
Messaggi: 1.364
Iscritto il: 1-September 04
Da: Verona
Utente Nr.: 2.260



Benissimo, grazie della spiegazione.
Davide


--------------------
Vieni a trovarmi sul mio blog e su flickr.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic

 

Collapse

> 

    Titolo discussione Risposte Autore discussione Visite Ultima azione
No new   10 MACBUK 158 15 June 2008 - 03:56
Ultimo messaggio di: pieffe60
No New Posts   0 TevacPhoto 18 4 June 2008 - 22:57
Ultimo messaggio di: TevacPhoto
No New Posts   0 TevacPhoto 13 4 June 2008 - 22:57
Ultimo messaggio di: TevacPhoto
No New Posts   0 TevacPhoto 14 4 June 2008 - 22:57
Ultimo messaggio di: TevacPhoto
No New Posts   3 drscholls 116 22 May 2008 - 16:50
Ultimo messaggio di: drscholls
No New Posts 3 arbushell 124 16 May 2008 - 00:57
Ultimo messaggio di: poweruser
No New Posts   0 mauroga 725 3 April 2008 - 16:22
Ultimo messaggio di: mauroga
No New Posts   2 robizucc 241 7 March 2008 - 17:06
Ultimo messaggio di: robizucc
No New Posts   3 ryosaeb4 191 8 November 2007 - 12:38
Ultimo messaggio di: ryosaeb4
No New Posts   2 verbal_kint 370 12 October 2007 - 08:31
Ultimo messaggio di: ceuce
No New Posts   4 Tevac 716 4 August 2007 - 21:06
Ultimo messaggio di: markko
No new   11 gioz73 1.167 23 July 2007 - 10:20
Ultimo messaggio di: stefano D

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


RSS Versione Lo-Fi Oggi è il: 6 July 2008 - 01:47
IP.Board Skin Developed By Creative Networks