Как перейти на другую XIB и завершить выпуск предыдущей XIB? - PullRequest
0 голосов
/ 01 ноября 2011

Я сейчас нахожусь в проекте по созданию книги для iPad. К сожалению, так как это мой первый проект для iPad, я пишу в очень нестандартном стиле.

Это книга на 20 страниц, и у меня есть 20 XIB. На каждой XIB я вызываю следующую XIB, но я боюсь, что текущая XIB не выгружается и все еще занимает память. Когда я нахожусь на странице 10 или около того, приложение вылетает из-за didReceiveMemoryWarning.

Я переключаю взгляды двумя разными способами (я не знаю, какой из них лучше подойдет для моей цели):

#METHOD 1
-(IBAction)NextPage:(id)sender
{
    nextPage = [[NextPage alloc] initWithNibName:@"NextPage" bundle:nil];
    [self.view addSubview:nextPage.view];
    [self presentModalViewController:nextPage animated:YES];
    [self.view release]; // this was added to hopefully release the current view. 
}


#METHOD 2
-(IBAction)NextPage:(id)sender
{
    NextPage *nextpage = [[[NextPage alloc] init] autorelease];
    [self presentModalViewController:nextpage animated:YES];
}

В каждом представлении есть кнопки и прочее, но я хочу убедиться, что полностью стираю их из памяти при каждом вызове страницы.

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

- (void)dealloc {
    [view release]; // don't know which is which 
    [self.view release]; // is this correct?
    [super dealloc];
}

Любая помощь приветствуется! Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 04 ноября 2011

Если вы просто переключаетесь между страницами в книге, вы, вероятно, не должны представлять модально.Вместо этого вы можете просто поменять представления.

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/CreatingViews.html

... transitionFromView: toView: duration: options: завершение: методы, чтобы поменять все наборы представлений на новыеиз них.

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/clm/UIView/transitionFromView:toView:duration:options:completion:

Другой вариант - использовать слои внутри вида.

http://www.raywenderlich.com/2502/introduction-to-calayers-tutorial

0 голосов
/ 04 ноября 2011

UINavigationController может справиться с этим гораздо проще. Посмотрите на документацию. Кроме того, с iOS5 теперь есть viewController типа книги, который может хорошо вам служить.

0 голосов
/ 01 ноября 2011

Если вы представляете следующую страницу модально (как вы делаете), текущая страница не будет выпущена.Вместо этого установите rootViewController вашего окна на новую страницу.

...