Ho bisogno di un chiarimento riguardo la differenza tra NSString e NSMutableString. Qualcuno può espandersi brevemente?Qual è la differenza tra NSString e NSMutableString?
risposta
Un'istanza NSString non può essere modificata una volta inizializzata, è "immutabile". Nessun metodo NSString può modificare il valore della stringa.
NSMutableString può essere modificato dopo l'inizializzazione.
Solo per ampliare la risposta di Andy White, potrebbero esserci dei vantaggi in termini di prestazioni nell'utilizzo di NSString invece di NSMutableString nel codice (come sempre, testare gli strumenti delle prestazioni di Apple per accertarsi che questo sia veramente il collo di bottiglia delle prestazioni). Nella situazione in cui si desidera modificare il valore di una NSString, un'opzione è quella di creare una NSString completamente nuova con il valore alterato in essa e quindi distruggere la vecchia NSString.
Supponiamo di avere un codice come questo
NSString *s = [[NSString alloc] initWithString:@"Hello"];
s = [s stringByAppendingString:@"World"];
e altro codice come questo
NSMutableString *ms = [[NSMutableString alloc] initWithString:@"Hello"];
[ms appendString:@"World"];
Entrambi questi, funzionalmente, fare la stessa cosa tranne che per una differenza - il principali perdite di codice. - [NSString stringByAppendingString:] genera un nuovo oggetto NSString immutabile che indica quindi al puntatore s di puntare. Nel processo, tuttavia, si rende orfano l'oggetto NSString che è stato originariamente indicato. Sostituendo la riga come segue sarebbe sbarazzarsi della perdita:
s = [[s autorelease] stringByAppendingString:@"World"];
Si tratta ancora di un problema con il framework ARC? – sunny
La differenza tra NSMutableString e NSString è che
NSMutableString:NSMutableString oggetti forniscono metodi per modificare la matrice sottostante di caratteri che rappresentano, mentre NSString no. Ad esempio, NSMutableString espone metodi come appendString, deleteCharactersInRange, insertString, replaceOccurencesWithString, ecc Tutti questi metodi funzionano sulla corda come esiste in memoria.
NSString: d'altra parte è solo una stringa di creare-once-poi-read-only se si vuole; scoprirai che tutti i suoi metodi di "manipolazione" (sottostringa, uppercaseString, ecc.) restituiscono altri oggetti NSString e non modificano mai effettivamente la stringa esistente in memoria.
- 1. Qual è lo scopo di avere NSMutableString e NSString?
- 2. Qual è la differenza tra = e: =
- 3. Qual è la differenza tra Verilog! e ~?
- 4. Qual è la differenza tra? : e ||
- 5. qual è la differenza tra [[], []] e [[]] * 2
- 6. Qual è la differenza tra $ e $$?
- 7. Qual è la differenza tra ("") e (null)
- 8. Qual è la differenza tra dict() e {}?
- 9. Qual è la differenza tra " " e ""?
- 10. Qual è la differenza tra {0} e ""?
- 11. Qual è la differenza tra `##` e `hashCode`?
- 12. Qual è la differenza tra {0} e +?
- 13. Qual è la differenza tra .ToString() e + ""
- 14. qual è la differenza tra:.! e: r !?
- 15. Qual è la differenza tra preferredLocalization e preferredLanguage?
- 16. Qual è la differenza tra NSCFString e NSConstantString?
- 17. Objective-C: Qual è la differenza tra forKey e forKeyPath?
- 18. Dati sensibili: NSString VS NSMutableString (iPhone)
- 19. Come rimuovere una NSString da una NSMutableString?
- 20. Conteggio dei caratteri in NSString o NSMutableString?
- 21. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 22. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 23. Qual è la differenza tra il callback e la promessa
- 24. Qual è la differenza tra la sezione .got e .got.plt?
- 25. Qual è la differenza tra la lista() e []
- 26. Qual è la differenza tra GHC e la piattaforma Haskell?
- 27. Qual è la differenza tra sé e la finestra?
- 28. Qual è la differenza tra la cartella vim72 e vimfiles?
- 29. Qual è la differenza tra la serratura e RLock
- 30. Qual è la differenza tra la funzione() {}() e function() {}()
Penso che tu possa avere una buona idea su ciò che fanno esaminando i metodi disponibili su ciascuno. –