Come si usano le NSString in Objective-C?

di il
7 risposte

Come si usano le NSString in Objective-C?

Ciao a tutti,
per chi viene da linguaggi tipo il C++/Java/C# l' uso delle stringhe in Objective-C può apparire un poco strampalato:

NSString* s1 = @"Pippo";

int age = 25;
NSString* s2= [NSString stringWithFormat: @" age is %d", age];

NSString* s3 = [s1 stringByAppendString: s2];
Siccome saper manipolare le stringhe è fondamentale, qualcuno può dare qualche spiegazione?

7 Risposte

  • Re: Come si usano le NSString in Objective-C?

    Inizio a rispondere alla prima domanda:
    
    NSString *s = @"Hello"
    
    Le stringhe in Objective-C sono implementate attraverso la classe NSString, si tratta di stringhe costanti, ovvero non è possibile alterarne il contenuto, per gestire stringhe dinamiche si usa la classe NSMutableString.

    In Obj-C tutti gli oggetti sono riferiti tramite puntatori, e dato che la stringa è un oggetto la sua dichiarazione deve essere:
    
    NSString *s;
    
    Il metodo più semplice per assegnare una stringa è fare:
    
    NSString *s = @"Hello";
    
    Il segno @ indica che la stringa non è una stringa C, ma una oggetto NSString (tra l' altro le NSString sono in unicode). Dopo l' assegnamento la variabile s punterà alla zona di memoria dove è allocato un oggetto stringa contenente 'Hello'.
  • Re: Come si usano le NSString in Objective-C?

    Ciao a tutti, rispondo ora alla seconda domanda che riguardava la concatenazione delle stringhe.

    In Objective-C non si possono concatenare le stringhe con l' operatore +, bisogna ricorrere ai metodi della classe NSString. In questo esempio concateniamo due stringhe mettendoci uno spazio in mezzo.

    Ci sono due modi, il primo ricorre al metodo stringByAppendingString
    
    NSString *nome = @"Rosa";
    NSString *surname = @"Rossi";
    
    NSString *fullName = [name stringByAppendingString: @" "];
    NSString *fullName = [fullName stringByAppendingString: surname];
    
    Il secondo sistema usa stringWithFormat
    
    NSString *nome = @"Rosa";
    NSString *surname = @"Rossi";
    NSString *fullName = [NSString stringWithFormat: @"%@ %@", name, surname];
    
  • Re: Come si usano le NSString in Objective-C?

    In aggiunta alla classe NSString, che una volta scritta non è più modificabile, esiste anche NSMutableString in cui è possibile alterare il contenuto (è simile allo StringBuilder del C#), ecco un esempio:
    
    NSMutableString * s = [NSMutableString new];
    [s appendString: @"this is a test"];
    [s appendString: s1];
    [s appendString: s2];
    
    Questa classe deriva da NSString per cui possiede tutti i suoi metodi e ne aggiunge altri, ad esempio:

    - insertString: per inserire in un certo punto.
    - deleteCharactersInRange: per eliminare del testo.
    - replaceOccurrencesOfString: per sostituire le occorrense di una stringa con un altra.
    - ecc.
  • Re: Come si usano le NSString in Objective-C?

    Ma le stringhe tipo C si usano anche loro?
  • Re: Come si usano le NSString in Objective-C?

    Orso Bruno ha scritto:


    Ma le stringhe tipo C si usano anche loro?
    Da quello che ho visto guardando gli esempi in giro, vengono evitate come la peste!
  • Re: Come si usano le NSString in Objective-C?

    Questo vale anche per gli array?
  • Re: Come si usano le NSString in Objective-C?

    Finora in tutti gli esempio ho visto usare solo le classi NSArray e simili, credo che l' uso degli array C sia poco utilizzato, probabilmente per stare alla larga da problemi di allocazione e rilascio della memoria. Con le classi NSArray sfrutti il sistema di autorelease, con le malloc e le free non so a che problemi vai incontro.
Devi accedere o registrarti per scrivere nel forum
7 risposte