NSMutableString a resultados NSString en “mensaje enviado a la instancia desasignado”

StackOverflow https://stackoverflow.com/questions/4480289

Pregunta

Tengo datos en un NSMutableString, localPName. Quiero salvar los datos del usuario, así:

[[NSUserDefaults standardUserDefaults] setObject:aString forKey:@"thePNameKeyValue"];

El compilador está tratando siempre tan difícil de enseñarme sobre “mensaje enviado a la instancia desasignado.” Aparte de sintetizar y de un solo uso (que imprime los datos válidos), no veo donde fue tocado localPName, mucho menos “desasignado,” puesto en libertad, lo que sea.

NSMutableString *localPName;
NSString        *whateverNSString;
@property(nonatomic,retain) NSMutableString *localPName;
@property(nonatomic,retain) NSString *whateverNSString;


@synthesize localPName;
@synthesize whateverNSString;
localPName = [[NSMutableString alloc] initWithCapacity:40];
//  [localPName appendString:@""];  ← seems to make no difference

- (void)textFieldDidEndEditing:(UITextField *)textField {
    NSMutableString *teststring=[NSMutableString stringWithString:textField.text];
    localPName = teststring;
    NSLog(@"at textFieldDidEnd, localPName='%@'",localPName);   // ← prints correct data
}

De aquí en adelante estoy más o menos a comer.

Para responder a “¿Qué has intentado?” He incluido muchas de las sugerencias que he cadged de la ‘red. Cómo inicializar NSString a NSMutableString? Objective-C "mensaje enviado a la instancia 0x5633b0 desasignado" Los resultados de arriba fueron: (BGF) el símbolo de información 0x2f699fe0 Ningún símbolo coincide 0x2f699fe0.

//  1
//NSString *str1 = @""; 
//  str1 = [str1 stringByAppendingString:localPName];
//  2
//  NSString *str1 = [[NSString alloc] initWithString:localPName];
//  3
//  whateverNSString = [[NSString alloc] initWithString:localPName];
//  4
//  whateverNSString =localPName;   //  message sent to deallocated instance, nonatomic,retain
//  5
//  self.whateverNSString =localPName;  //  message sent to deallocated instance, nonatomic, retain
//  6
//  whateverNSString =localPName;   //  message sent to deallocated instance, nonatomic, retain
//  7
//  glbl_asNeededInt = [whateverNSString length];   //  message sent to deallocated instance, nonatomic, copy
//  NSLog(@"saveButton 3 length=%d",glbl_asNeededInt);
//  8
//  whateverNSString = localPName;  //  crash. no crash log, no console. no nuthin' 
//  9
//  https://stackoverflow.com/questions/1354490/how-to-take-an-nsstring-out-of-an-nsmutablestring
//  whateverNSString = [localPName copy];
//  10
//  whateverNSString = (NSString*) localPName;
//  11
//  NSString* aString = [NSString stringWithFormat: @"%@", localPName]; // message sent ...
//  12
// NSString* aString = [NSString stringWithString:localPName];  // message sent ...

Días de fiesta están subiendo. Mis gracias a la gente que sólo podría contribuir a conseguir un regalo o dos principios.

¿Fue útil?

Solución

puntos testString a un autoreleased instancia que se asigna directamente a instancia de variable. Se debe utilizar la incubadora en su lugar:

self.localPName = teststring;

Con que se tome la propiedad de la cadena (la incubadora toma la propiedad mediante la retención de la instancia) y también no se escapan de la instancia que ha asignado a él anteriormente (que se dará a conocer adecuadamente por el colocador).

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