Если вы выделите объект в функции, которую вам нужно вернуть из функции, вы не сможете освободить его внутри функции.Правильный способ сделать это - автоматически освободить объект.
MSMutableArray *customers = [[MSMutableArray alloc] init];
// ..... do work
return [customers autorelease];
Этот подход используется конструкторами connivence, такими как
[NSString stringWithString:@"test"];
Этот метод вернет вам автоматически освобожденную строку, чтобы вам не нужно было ее освобождать.
И если вы этого не сделаете, вам следует назвать свою функцию соответствующим образом, чтобы вызывающая сторона знала, что она владеет возвращаемым объектом и, следовательно, должна быть освобождена.Это соглашения, а не правило, налагаемое компилятором или средой выполнения, но соблюдение соглашения чрезвычайно важно, особенно когда в проекте участвует несколько человек.