0

У меня есть два контроллера. В первом случае есть прикладом, и когда он щелкнут, второй будет показан методом presentModalViewController. Однако, когда я возвращаюсь к первому, вызывается dismissModalViewController, а второй контроллер рассеивается, но память не освобождается. Я использовал инструмент для наблюдения распределения памяти и дуги.ОтключитьModalViewController не освобождает память

Я думал, что могу сделать что-то не так, но я попробовал официальный образец кода, iPhoneCoreDataRecipes и CoreDataBooks, это также произошло. Мне интересно, почему momery не был выпущен?

Ниже приводится код 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]; 
} 

Я делал подобные вещи, но я использовал дугу вместо так что я не имею линий высвобождения.

+0

Где освободить память secondViewDCotroller? – iPatel

+0

использование [secViewCon_Object release]; secViewCon_Object = nil; – iPatel

+0

Он не может использовать выпуск, потому что использует ARC. Пожалуйста, покажите свой modal view controller. –

ответ

0

Вы можете сделать циклы удержания в своем модульном контроллере. Сохранять циклы, когда первый объект имеет сильную ссылку на второй объект, который также имеет сильную ссылку на первый объект. Читайте о сохранении циклов в яблочной документации:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html#//apple_ref/doc/uid/TP40004447-1000810

и здесь:

http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html (Использование Lifetime Отборочное избежать сильной ссылки Cycles)

+0

В чем дело, почему официальные образцы имеют одинаковую проблему? не могли бы вы взглянуть на образец iPhoneCoreDataRecipes или CoreDataBooks? Я сделал схожую с первой. – user2053760

+0

Вы конвертируете iPhoneCoreDataRecipes в ARC? –

+0

Нет, я этого не делал, я просто запускаю образец и проверяю выделение памяти. – user2053760

Смежные вопросы