comand89 Inviato 26 Gennaio 2010 Segnala Condividi Inviato 26 Gennaio 2010 ciao a tutti, ho provato a creare un'app semplice semplice. è formata da qualche UIImageView organizzate in un array ( UIImageView *image[30] ) le quali una volta toccate devono cambiare immagine. le mie immagini sono chiamate: inizio1.jpg fine1.jpg inizio2.jpg fine2.jpg inizio3.jpg fine3.jpg ........... ............ inizio30.jpg fine30.jpg quindi ogni UIImageView è inizializzata con la rispettiva immagine "inizioX.jpg" e una volta toccata dovrà assumere "fineX.jpg" dove "X" indica il numero dell'immagine. Per realizzare questo è bastato scrivere (con relativi controlli) dentro l'evento "touchesEnded": int X; //numero immagine ..... //controlli vari image[X] .image= [uIImage imageNamed:[[NSString alloc] initWithFormat:@"fine%d.png", X ]]; in questa maniera funziona, ma il tutto è molto lento, quando tocco un'immagine ci mette quasi 1 secondo a cambiare da "inizioX.png" a "fineX.png". Ho provato allora ad allocare tutte le immagini nel viewDidLoad utilizzando 2 array UIImage UIImage *imgInizio[30]; UIImage *imgFine[30]; il codice dentro a "touchesEnded" è quindi diventato questo: int X; //numero immagine ..... //controlli vari image[X].image = imgFine[X]; Ho testato questo metodo su 1 o 2 immagini e la velocità è migliorata notevolmente, peccato che se estendo l'algoritmo a tutte e 30 le immagini il programma crasha quasi sempre su iPhone appena tocco un'immagine mentre sul simulatore fa quello che dovrebbe fare. E' un problema di gestione della memoria? avete idee alternative al mio metodo per velicizzare il cambio di immagini? Mi sto scervellando da molto ma non trovo soluzioni, spero qualcuno possa aiutarmi. grazie in anticipo e scusate per il papiro Link al commento Condividi su altri siti Altre opzioni di condivisione...
denial1984 Inviato 27 Gennaio 2010 Segnala Condividi Inviato 27 Gennaio 2010 crasha perchè non alloca abbastanza memoria...la stringa del motivo del crash puoi riportarlo? iMac 27" , iPhone 4s 16gb , iPod Photo 4Th GEN 20GB Link al commento Condividi su altri siti Altre opzioni di condivisione...
comand89 Inviato 27 Gennaio 2010 Autore Segnala Condividi Inviato 27 Gennaio 2010 ciao,grazie per aver risposto. non so dove prendere questa stringa, se me lo dici la riporto subito Link al commento Condividi su altri siti Altre opzioni di condivisione...
denial1984 Inviato 27 Gennaio 2010 Segnala Condividi Inviato 27 Gennaio 2010 allora... prima di tutto ti parlo da half/ing informatico che sono e onniscente conoscitore dei fausti linguaggi di programmazione... Il problema a me sembra prima di tutto di esaurimento della memoria volatile... dunque dovresti deallocare la memoria al puntatore definito prima di riallocare memoria per una nuova foto, o più astrattamente di segmentation fault (accesso alla memoria non autorizzato). Visto che purtroppo per ora non mi sono avvicinato al carbon ed è uno dei pochi che mi manca sicuramente mi metterò all'opera anche io a breve Cmq sia ma sei passato dal simulatore all'iphone grazie a cidya o hai acquistato la licenza pakketto dev per poter trasferire su iphone le tue applicazioni? iMac 27" , iPhone 4s 16gb , iPod Photo 4Th GEN 20GB Link al commento Condividi su altri siti Altre opzioni di condivisione...
comand89 Inviato 27 Gennaio 2010 Autore Segnala Condividi Inviato 27 Gennaio 2010 non ho acquistato la licenza, per ora ho un iphone sbloccato e per poter testare le app sull'iphone ho dovuto cambiare qualche file dell'sdk e procedure varie Link al commento Condividi su altri siti Altre opzioni di condivisione...
comand89 Inviato 27 Gennaio 2010 Autore Segnala Condividi Inviato 27 Gennaio 2010 Se ho capito bene mi dici di deallocare la memoria occupata dall'immaigne "inizioX.png" per allocare al suo posto "fineX.png". penso di aver gia fatto un tentativo, ovvero faccio una cosa di questo genere [image[X].image dealloc]; //dealloco vecchia immagine ..... //proseguo assegnando la nuova immagine ma anche così crasha. non so se le istruzioni per deallocare sono giuste in quanto ancora non ho ben chiara la gestione dei puntatori in questo linguaggio. Link al commento Condividi su altri siti Altre opzioni di condivisione...
J_Ares Inviato 29 Gennaio 2010 Segnala Condividi Inviato 29 Gennaio 2010 Non puoi allocare tutto l'array con tutte le immagini ci sono, se sono pesanti non hai sufficiente memoria per allocare tutto. image[X] .image= [uIImage imageNamed:[[NSString alloc] initWithFormat:@"fine%d.png", X ]]; se allochi le immagini così allora NON devi fare questo [image[X].image dealloc]; //dealloco vecchia immagineperché deallochi una zona di memoria che non è tua. è sufficiente assegnare la nuova immagine.nella prima istruzione c'è un altro errore: [[NSString alloc] initWithFormat:@"fine%d.png", X ] così perdi ram per ogni stringa perché non la liberi correttamente. devi usare [NSString stringWithFormat:@"fine%d.png", X ] puoi provare cercare i leakage di ram usando la funzione build and analyze di xcode 3.2 il Mio Sito i miei software:--Dvd Hunter | Game Hunter | Book Hunter | Hunter Touch  MacBook Pro 15" i7  iMac Alu  iPod touch 4° Link al commento Condividi su altri siti Altre opzioni di condivisione...
comand89 Inviato 29 Gennaio 2010 Autore Segnala Condividi Inviato 29 Gennaio 2010 grazie per la dritta...sono riuscito a fare quello che volevo, le immagini erano davvero troppo pesanti, non me ne ero accorto quindi ora funziona. ora sistemo anche quel fatto delle stringhe...grazie mille Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.