IPB     Il futuro di Tevac dipende da te!  

Benvenuto Visitatore ( Log In | Registrati )

C'è un Contest da votare, Fallo ora!!

  · · · · · · · · · · · ·
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.511
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


life, n: a whim of several billion cells to be you for a while
***********

Gruppo: Supporter
Messaggi: 9.327
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

L'atomo divisibile: podcast gratuito di divulgazione scientifica.

X come Macintosh, la nuova serie
Nel numero di ottobre: No, tu no; Ancora Fusion; Podcast anch'io.
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.511
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 Posts   3 MacIavelli 98 18 September 2008 - 22:17
Ultimo messaggio di: MacIavelli
No new   61 Rodolfo Stigliano 2.597 13 September 2008 - 20:13
Ultimo messaggio di: simulacron
No New Posts   6 [Daitarn] 131 10 September 2008 - 21:50
Ultimo messaggio di: sirguich_
No new   10 borros 311 17 August 2008 - 07:41
Ultimo messaggio di: alcina
No new   21 3rr3 299 13 August 2008 - 12:46
Ultimo messaggio di: Lullaby71
No new   10 MACBUK 218 15 June 2008 - 03:56
Ultimo messaggio di: pieffe60
No New Posts   0 TevacPhoto 50 4 June 2008 - 22:57
Ultimo messaggio di: TevacPhoto
No New Posts   0 TevacPhoto 38 4 June 2008 - 22:57
Ultimo messaggio di: TevacPhoto
No New Posts   0 TevacPhoto 35 4 June 2008 - 22:57
Ultimo messaggio di: TevacPhoto
No New Posts   3 drscholls 186 22 May 2008 - 16:50
Ultimo messaggio di: drscholls
No New Posts 3 arbushell 166 16 May 2008 - 00:57
Ultimo messaggio di: poweruser
No New Posts   0 mauroga 857 3 April 2008 - 16:22
Ultimo messaggio di: mauroga

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


RSS Versione Lo-Fi Oggi è il: 13 October 2008 - 15:04
IP.Board Skin Developed By Creative Networks