В C что-то вроде следующего будет катастрофой (то есть утечкой памяти), потому что вы возвращаете указатель на память, которую вы никогда не сможете освободить:
NSString* foo()
{
return [NSString stringWithFormat:@"%i+%i=%i", 2, 2, 2+2];
}
Это на самом деле совершенно нормально в Objective-C, поскольку память, на которую указывает возвращаемый указатель, будет автоматически освобождена? Даже если все в порядке, это по какой-то причине осуждается? Любая причина, чтобы предпочесть стиль C, как показано ниже?
void foo(NSString ** modifyMe)
{
*modifyMe = [NSString stringWithFormat:@"%i+%i=%i", 2, 2, 2+2];
}