2010-07-26 12 views
8

Ho un ciclo piuttosto grande che ottiene una stringa, fa qualcosa per esso, piuttosto che passa alla successiva. Inizialmente lo stavo rilasciando, quindi lo ho riallocato ma ho pensato che fosse un po 'di spreco di risorse, ma non riesco a capire come eliminarlo per riutilizzarlo.Cancellare piuttosto che rilasciare una NSMutableString

risposta

18

Un modo sarebbe [myString setString: @""].

+1

Questo è fastidioso, in realtà l'ho provato e si è schiantato, quindi ho pensato che non avrebbe funzionato. Finito ho lasciato un'altra dichiarazione che si è schiantato. – Rudiger

1

La soluzione scelta andrà in crash con il seguente errore:

'Tentativo di mutare oggetto immutabile con setString:'

Questo ha funzionato per me, invece:

self.myString = [NSMutableString stringWithString: @ ""];

assicurati di sintetizzare myString nella tua classe.

+0

concordato. L'impostazione di NSMutableString su una NSString non è buona. L'errore che si ottiene in Xcode 4.4 è "Tipi di puntatori incompatibili che inviano 'NSString *' al parametro di tipo 'NSMutableString *'". Impostarlo con questa soluzione è meglio. – Joseph

+1

Mi sembra che stia allocando una nuova istanza NSMutableString? Non è tanto uno spreco di risorse quanto nella domanda originale? – ArtOfWarfare

+0

Se si ottiene "Tentativo di mutare oggetto immutabile con setString:", la stringa che si sta tentando di modificare non è una "NSMutableString", e si ha a che fare con un problema diverso da "Cancellare piuttosto che rilasciare una NSMutableString", il titolo di questa domanda. – JWWalker

Problemi correlati