我有两个控制器。在第一个中,有一个按钮,当单击它时,第二个将通过该presentModalViewController
方法显示。但是,当我回到第一个时,dismissModalViewController
调用了第二个控制器,但没有释放内存。我用仪器来观察内存分配和弧。
我以为我可能做错了什么,但我尝试了官方示例代码 iPhoneCoreDataRecipes 和 CoreDataBooks,这也发生了。我想知道为什么没有释放moomery?
以下是官方示例配方中 presentModal 和 dismissModal 的代码:
- (void)add:(id)sender {
RecipeAddViewController *addController = [[RecipeAddViewController alloc] initWithNibName:@"RecipeAddView" bundle:nil];
addController.delegate = self;
Recipe *newRecipe = [NSEntityDescription insertNewObjectForEntityForName:@"Recipe" inManagedObjectContext:self.managedObjectContext];
addController.recipe = newRecipe;
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addController];
[self presentModalViewController:navigationController animated:YES];
[navigationController release];
[addController release];
}
- (void)recipeAddViewController:(RecipeAddViewController *)recipeAddViewController didAddRecipe:(Recipe *)recipe {
if (recipe) {
// Show the recipe in a new view controller
[self showRecipe:recipe animated:NO];
}
// Dismiss the modal add recipe view controller
[self dismissModalViewControllerAnimated:YES];
}
我做了类似的事情,但我使用 arc 代替,所以我没有释放线。