Pregunta

@interface MainView : UIView { 
    NSMutableString *mutableString; 
}
@property (nonatomic, retain) NSMutableString *mutableString;
@end

@implementation MainView
@synthesize mutableString;

-(void) InitFunc {  
    self.mutableString=[[NSMutableString alloc] init];
 }

-(void) AppendFunc:(*NString) alpha { 
    [self.mutableString stringByAppendingString:@"hello"];
    NSLog(@"the appended String is: %@",self.mutableString);
    int len=[self.mutableString length];
}

Hola a todos,

Sólo quiero saber dónde estoy haciendo mal ??? . Probé este código, pero "mutableString" no añade ningún valor (como valor de "len" viene '0' y NSLog doesnt imprimir cualquier valor de "mutableString"), aunque yo he buscado en la red para la solución, la gente implementadas en el misma manera todavía no sé por qué mi código isnt de trabajo.

Gracias de antemano

MGD

¿Fue útil?

Solución

stringByAppendingString: crea nueva cadena. Uso appendString: lugar:

[mutableString appendString: @ "hola"]

Otros consejos

nombres 1) Su método violan las convenciones de nombres: las letras en minúsculas para empezar

.

2) stringByAppendingString devuelve una nueva cadena como resultado y no modifica su original. Debe utilizar [self.mutableString appendString:@"hello"]; lugar.

3) Su método init tiene una fuga. Debe utilizar mutableString = [[NSMutableString alloc] init]; y no utilizar la sintaxis con punto, ya que de lo contrario será retained (y una release sería que falta).

Oh Dios, qué desastre. El stringByAppendingString no cambia la cadena, se crea y devuelve una nueva:

// Sets str2 to “hello, world”, does not change str1.
NSMutableString *str1 = [NSMutableString stringWithString:@"hello, "];
NSString *str2 = [str1 stringByAppendingString:@"world"];

Si desea cambiar la propia cadena mutable, utilice el método appendString:

// Does not return anything, changes str1 in place.
[str1 appendString:@"world"];

Además, se trata de una fuga:

self.mutableString = [[NSMutableString alloc] init];

Esto es mejor escribir como:

mutableString = [[NSMutableString alloc] init];

... porque el uso de métodos de acceso en init y dealloc no es la mejor idea .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top