Первое правило, которое следует помнить, когда вы имеете дело с управлением памятью в Objective-C, это то, что вы несете ответственность за все, что вы (1) выделяете (используя alloc
), (2) обновляете (используя * 1002)*), (3) копия (с использованием copy
) или (4) сохранение (с использованием retain
).В этих четырех случаях вы должны явно release
(или autorelease
) эти ссылки.
В вашем примере, поскольку вы выделили recipeView, вы должны освободить его, как только он будет добавлен в контроллер навигации.
RecipeView * recipeView = [[RecipeView alloc] initWithNibName:@"RecipeView" bundle:nil];
[self.navigationController pushViewController:recipeView animated:YES];
[recipeView release];
Если вы этого не сделаете, вы потеряете recipeView, так как он выходит из области видимости после выхода из метода, и у вас больше не будет доступа к выделенному пространству в куче.
Имеет ли это смысл?