Прежде всего, вы теряете память на res
. Вы выделяете это, затем указываете на новую строку, не освобождая выделенную.
NSString *res = [[NSString alloc] initWithString:prenom];
// after this line res points to new string, leaking previous alloced memory
res = [res stringByAppendingString:@" "];
Вместо alloc вы должны создать здесь автоматически освобожденную строку.
NSString *res = [NSString stringWithString:prenom];
res = [res stringByAppendingString:@" "];
res = [res stringByAppendingString:nom];
Или даже лучше:
return [NSString stringWithFormat:@"%@ %@", prenom, nom];
Я предполагаю, что не печатать, prenom
или nom
не является допустимой строкой NSString. Вы должны опубликовать их код тоже. И вы можете отлаживать, проверяя res
после каждой новой строки, чтобы выяснить, где она ломается.
Примерно так:
NSString *res = [NSString stringWithString:prenom];
NSLog(prenom); // prenom is OK
NSLog(res); // res is OK here
res = [res stringByAppendingString:@" "];
NSLog(res); // res is OK here too
res = [res stringByAppendingString:nom];
NSLog(nom); // nom is OK
NSLog(res); // final content of res
Надеюсь, это поможет.