Conosco le basi della gestione della memoria, ma non le parti interne di come iOS gestisce i diversi tipi di dati. Qualcosa mi fa sempre rimproverare che è meglio usare uno NSData
contro NSMutableData
o NSString
piuttosto che uno NSMutableString
. C'è davvero qualche differenza di prestazioni a meno che il codice sarà in esecuzione in un ciclo di 10k o sto sprecando il mio tempo?Vale la pena convertire NSMutable <T> in NS <T>
risposta
Utilizzare i tipi mutabili in cui si desidera poter modificare i contenuti in posizione. Usa i tipi immutabili altrimenti.
In alcuni casi non è possibile scegliere, ad esempio l'oggetto dati che contiene i dati restituiti da un NSURLRequest: l'utilizzo di un oggetto dati mutevole è molto più semplice rispetto alla creazione di molti tipi di dati immutabili e alla loro unione alla fine.
Dopodiché, esegui il tuo codice attraverso il profiler e vedi se dovresti fare qualcosa di diverso. cioè se il sovraccarico di creare nuovi tipi immutabili per contenere oggetti è più efficiente rispetto all'utilizzo di un tipo mutabile. Qualsiasi altra cosa è un'ottimizzazione prematura.
Come hai detto la sua unica utilità se chiami usa Mutable molte volte. Ma se lo chiami solo poche volte questo non è un problema.
Si dovrebbe pensare alle alternative, ad es. in un più ampio metodo TableViews cellForRowAtIndexPath:
. Utilizzare [NSString stringWithFormat:@"%@%@", fristString, secondString]
, anziché *foo = [[NSMutableString alloc] init]
e [foo append:firstString]
e così via.
TableView come esempio non sembra avere molto senso a causa della memorizzazione nella cache e il riutilizzo delle celle e il rendering delle sole celle visibili. – vikingosegundo
Assolutamente no, cosa succede se si crea la stringa che deve essere visualizzata tramite NSMutableString. –
Non capisco il tuo punto. Il tableview viene modificato solo una volta per runloop, quindi non molto spesso. – vikingosegundo
- 1. Come utilizzare l'espressione del generatore CMake $ <TARGET_FILE: tgt>?
- 2. GroupLayout: vale la pena imparare?
- 3. Vale la pena utilizzare JDEE?
- 4. Vale la pena imparare Tkinter?
- 5. L'MVP vale sempre la pena?
- 6. Vale la pena provare MonetDB?
- 7. Agile Toolkit, vale la pena usare?
- 8. Vale la pena imparare il linguaggio assembly?
- 9. Vale la pena imparare GNU Make?
- 10. Vale la pena imparare Perl 6?
- 11. Vale la pena imparare Ruby On Rails
- 12. Vale la pena di imparare ASP classico?
- 13. MyEclipse: vale ancora la pena utilizzarlo?
- 14. Vale la pena utilizzare sqlalchemy-migrate?
- 15. VTune vale la pena considerare per Delphi?
- 16. WCF su Linux: ne vale la pena
- 17. Telerik openaccess ORM vale la pena imparare?
- 18. convertire EnumerableRowCollection <string> la lista <string>
- 19. Vale la pena chiudere i file in piccole funzioni?
- 20. Vale la pena usare std :: tr1 in produzione?
- 21. Vale la pena precedere il condizionale in un ciclo for?
- 22. Riciclare le visualizzazioni in una lista, ne vale la pena?
- 23. La revoca del token JWT vale la pena?
- 24. Vale la pena aggiungere la sezione armv7s su iOS6?
- 25. Differenza tra tipo di dati "datetime64 [ns]" e "<M8 [ns]"?
- 26. MVC: la minificazione HTML ne vale la pena?
- 27. GSSException: nessuna credenziale valida fornita (livello meccanismo: impossibile trovare tgt Kerberos)
- 28. Java vale la pena apprendere sulla mia trentina?
- 29. Vale la pena creare librerie statiche per iOS?
- 30. A che punto vale la pena usare un database?
Sto davvero parlando quando ho dati che ho manipolato in un metodo e sto passando ad un altro. – Echilon
@Echilon Come ho detto, dipende da cosa stai facendo. Se il metodo con cui si restituiscono i dati deve essere modificato, restituire un oggetto mutabile. Personalmente, tendo a mantenere immutabili i miei tipi di dati quando li passo in giro. Preferisco i tipi immutabili per le proprietà il più possibile. Mantiene le cose molto più sicure, e nei casi in cui i valori vengono martellati da punti diversi, rende più facile il debug. i cluster di classi mutabili/immutabili hanno i metodi 'copy' e' mutableCopy' che sono molto utili per questo. – Abizern
La prima frase qui è la chiave: pensa a cosa vuoi fare con i dati. Se ha bisogno di essere mutabile, rendilo mutabile. –