¿Cuál es la forma recomendada de agregar a NSString?

Estoy realizando una concatenación de cadenas para crear una consulta de database. Como parte de esto, necesito asignar y volver a asignar la variable NSString para agregarle.

Actualmente estoy usando este código:

NSString *retVal = [[NSString alloc]init]; NSString *concat = @""; retVal = [NSString stringWithFormat:@"%@%@ myfield= 'myvalue'", retVal, concat]; 

Tenga en count que cuando retVal y concat tienen "" (cadena vacía), obtengo una cadena vacía en retVal. Esto definitivamente no se espera, ya que debería get "myfield = 'myvalue'".

¿Qué me estoy perdiendo?

Actualizar:

Aquí es el último que probé:

 NSMutableString * retVal = [[NSMutableString alloc] init]; NSString * concat = @""; [retVal appendString:@"appendstring"]; NSLog(@"%@", retVal); // prints <object returned empty description> [retVal appendString:concat]; [retVal appendString:@"appendstring1"]; NSLog(@"%@", retVal); // prints %@ 

Utilice una NSMutableString con appendString: use stringByAppendingString: o construya la cadena completa con una sola cadena stringWithFormat: conectando los valores que necesita todos a la vez.

  NSString *retVal = @""; NSString *concat = @""; //do whatever stuff you want with retVal and concat //once finished then do this below if(retVal.length==0||concat.length==0) { retVal = @"myfield= 'myvalue'"; } else retVal = [NSString stringWithFormat:@"%@%@ myfield= 'myvalue'", retVal, concat];