Ho un UITableView. ogni riga è un oggetto pesante con video, immagini ecc. Quando l'utente scorre questa vista, come posso rilasciare la memoria delle righe non visibili e caricare le righe visibili correnti?Le celle di UITableView si rilasciano quando non sono visibili
risposta
Suppongo che stiate parlando di liberare memoria utilizzata dalle immagini e dai video della riga e non dalla riga stessa.
Nel vostro delegato Tableview,
-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
ti dice quando lo scorrimento Tableview si è fermato.
[myTableView indexPathsForVisibleRows]
fornisce una matrice di ciò che è visibile.
Se la riga non è in questo array, non è visibile e su di esso è possibile eseguire la pulizia dell'immagine/del video.
Stai riciclando UITableViewCells secondo le raccomandazioni di Apple? In caso contrario, è necessario leggere i documenti di Apple. All'interno di cellForRowAtIndexPath: delegato si dovrebbe avere qualcosa [customCell setMediaObjects:]. All'interno della classe customCell è possibile rilasciare tutti i mediaObjects precedenti dalla memoria.
A Closer Look at Table-View Cells - Apple Documentation
Quando si chiama dequeueReusableCellWithIdentifier prima 10 (a soli dieci cellule possono essere visualizzati a schermo in un dato momento) saranno creati cellule, allora saranno appena caricati e configurati per mostrare. Quindi, le celle non vengono rilasciate.
Come altri hanno già detto, è necessario assicurarsi di riciclare le celle correttamente e di non distruggere le cose che sarebbe necessario ricreare comunque quando la cella viene riutilizzata.
Tuttavia, è possibile rilasciare altre risorse che la cella o le sue viste conservano. O se quella cella ha richieste di download in sospeso, ad esempio, potresti voler reimpostare la priorità o addirittura cancellarle quando la cella è fuori schermo.
penso che il modo più pulito per farlo è quello di ignorare solo -[UITableViewCell prepareForReuse]
Questo è chiamato quando la cella viene rimesso in coda riutilizzo. Se l'utente si muove rapidamente su e giù per il tavolo, potresti non voler pulire la cella nel momento in cui la cella è fuori dallo schermo (ad esempio, indicando indexPathsForVisibleRows).
Ma quando la cella viene effettivamente reinserita nella coda di riutilizzo, è un buon momento per farlo, dato che si sa che la cella non riappare sullo schermo finché non si deseleziona e si configura nuovamente.
- 1. UITableView scorre verso l'alto quando si ricaricano le celle con le altezze delle celle modificabili
- 2. initialLayoutAttributesForAppearingItemAtIndexPath attivato per tutte le celle visibili, non solo per le celle inserite
- 3. Impostazione dati per le celle UITableView statiche
- 4. UICollectionView indexPathsForVisibleItems non aggiorna nuove celle visibili
- 5. Impossibile definire le celle prototipo in UITableView
- 6. FileLabels non sono visibili
- 7. Aggiunta di celle a UITableView
- 8. Seleziona tutte le celle in UITableView
- 9. iPhone Le celle UITableView rimangono selezionate
- 10. Le mie app non sono visibili quando si utilizza AdminSite personalizzata
- 11. Come rimuovere direttamente le celle da UITableView?
- 12. Forza UITableView per chiamare cellForRowAtIndexPath: per tutte le celle
- 13. Caricare tutte le celle in UITableView prima di scorrere
- 14. Nascondi celle vuote in UITableView
- 15. Le barre di scorrimento sono visibili solo quando si passa il mouse su un div?
- 16. Come ottenere sezioni visibili di un UITableView?
- 17. iOS - I separatori di celle non vengono visualizzati su UITableView
- 18. Aggiunta programmatica di UITableView: come si imposta l'identificatore di riutilizzo per le celle?
- 19. Carica più celle di prototipo in UITableView
- 20. Impossibile nascondere le celle vuote in UITableView Swift
- 21. UITableView smette di scorrere quando si aggiungono nuove righe
- 22. Perché non posso selezionare le celle TableView?
- 23. dipendenze locali Gradle non sono visibili
- 24. UICollectionview Scorrimento continuo quando si caricano le celle
- 25. Forza UITableView per scorrere fino a Celle di celle
- 26. Parcelle non sono visibili utilizzando matplotlib plt.show()
- 27. Swift - UITableView all'interno di UIViewController, le funzioni di UITableView non sono chiamate
- 28. Rendi UITableView in posizione di scorrimento quando aggiungi le celle in cima
- 29. Il bordo superiore della cella superiore in UITableView Le celle raggruppate sono spesse e sfocate
- 30. UITableView non si aggiorna
utilizza celle riutilizzabili e dimentica la gestione della memoria (lasciare al sistema) – samfisher