El libro que estoy leyendo actualmente me ha escribir el siguiente código:NSArray y NSString
-(IBAction)displaySomeText:(id)sender {
NSString *cow = @"Milk";
NSString *chicken = @"Egg";
NSString *goat = @"Butter";
NSArray *food = [NSArray arrayWithObjects:cow, chicken, goat, nil];
NSString *string = @"The shopping list is: ";
string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];
[textView insertText:string];
}
entiendo un poco cómo funcionan las matrices pero necesito ayuda para entender el siguiente código
string = [string stringByAppendingString:[food componentsJoinedByString:@", "]];
Nunca he visto una instancia en la que esto sea posible.
Me tiene crear un objeto de 'cadena', de la clase NSString
, y luego estoy haciendo esto
string = [string stringByAppendingString:];
estoy confundido. Nunca he visto un ejemplo donde creo un objeto y luego realizo un método en el mismo objeto y lo almaceno en ese mismo objeto exacto.
Por ejemplo, sé que puedo hacer esto
NSSound *chirp;
chirp = [NSSound soundNamed:@"birdChirp.mp3"];
lo anterior tiene sentido porque he utilizado el objeto creado y realizado un método de clase en ella ..
pero siempre supuse que el equivalente del siguiente código NO fue posible
chirp = [chirp methodNameEtc..];
Espero haber explicado bien mi pregunta. Si no, siempre podría elaborar más.
Sí, gracias. Esta es la mejor respuesta hasta ahora. Me alegro de que hayas visto todo eso, jaja. Muchas gracias. –
Esta pregunta puede sonar tonta pero no programo mucho en ObjC: dado que las cadenas son inmutables, esto no causaría una pérdida de memoria ya que el objeto de cadena original ahora no tiene un puntero (ya que stringByAppendingString devuelve un nuevo objeto de cadena) ? – styfle
Sí. La cadena anterior ha sido desreferenciada como dices. Esto está bien si el objeto desreferenciado se libera automáticamente o se crea un literal de cadena como 'NSString * cow = @" Milk "' pero si se trata de una cadena retenida que sería una pérdida de memoria. Curiosamente, la mayoría de las preguntas sobre pérdida de memoria en este sitio parecen ser personas que confunden punteros y objetos. – NJones