Обращаясь к этому примеру PageControl, кто-нибудь может объяснить поток кода? Instruments дает мне утечку, поэтому ищу помощь.
Re: этот учебник:
http://www.edumobile.org/iphone/iphone-programming-tutorials/pagecontrol-example-in-iphone/
Мы инициируем массив для объектов Null в нашем методе AppDidFinishLaunching ...
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
[controllers addObject:[NSNull null]];
}
self.viewControllers = controllers;
[controllers release];
, а затем позвоните:
[self loadScrollViewWithPage:0];
[self loadScrollViewWithPage:1];
Вот реализация для loadScrollViewWithPage :
- (void)loadScrollViewWithPage:(int)page {
if (page < 0) return;
if (page >= kNumberOfPages) return;
PageControlExampleViewControl *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null]) {
controller = [[PageControlExampleViewControl alloc] initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];
}
if (nil == controller.view.superview) {
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[scrollView addSubview:controller.view];
}
}
Instruments сообщает мне об этой реализации в следующей строке:
if (nil == controller.view.superview) {
Кто-нибудь знает, почему произошла утечка в приборах? Мой код идентичен.
Также после первоначального вызова [self loadScrollViewWithPage: 0]; при первом проходе и создании объекта ОБА если пункты пройдены и введены.
Как это возможно? Если мы вводим первое , если предложение , мы выделяем и создаем наш контроллер и завершаем его ** освобождением * ( [освобождение контроллера] ).
Не должна ли следующая строка ( if (nil == controller.view.superview) ) вызвать ошибку EXC_BAD_ACCESS, если мы только что выпустили controller выше?
СКРИНШОТ ИЗ ИНСТРУМЕНТОВ: