Я сейчас потратил несколько дней, чтобы понять, что происходит, и ради своей жизни я не вижу, что я делаю неправильно.Я выскакиваю UIPopover, когда пользователь касается точки на экране.Всплывающее окно имеет контроллер вкладок и табличное представление, которое отображает информацию об этой точке.Но когда всплывающее окно отклонено, оно аварийно завершает работу, утверждая, что: - [UIAnimator removeAnimationsForTarget:]: сообщение, отправленное на освобожденный экземпляр
Вот код, который загружает контроллер представления:
MyViewController *popView = [[MyViewController alloc] init];
myPop = [[UIPopoverController alloc] initWithContentViewController:pop];
[popView release];
myPop.delegate = self;
[airportPop setPopoverContentSize:popView.view.frame.size];
[airportPop presentPopoverFromRect:CGRectMake(location.x,location.y,1,1) inView:self.mainView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
- (void)dismissPopover {
if( myPop != nil ) {
[myPop dismissPopoverAnimated:YES];
[myPop.delegate popoverControllerDidDismissPopover:airportPop];
}
}
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
[myPop release];
myPop = nil;
}
фактический MyViewController - это просто UIViewController, который с (сокращенно для краткости) init:
- (id)init
{
self = [super init];
//create a newview
self.view = popView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, POPUP_WIDTH, POPUP_HEIGHT)];
[popView release];
topBar = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, POPUP_WIDTH, 30)];
....
[popView addSubview:topBar];
[topBar release];
//create a table view
self.table = [[UITableView alloc] initWithFrame:CGRectMake(0, 30, POPUP_WIDTH, POPUP_HEIGHT-30-49)];
table.delegate = table.dataSource = self;
....
//create a tab bar
tabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, POPUP_HEIGHT-49, POPUP_WIDTH, 49)];
tabBar.delegate = self;
[popView addSubview:tabBar];
[popView addSubview:table];
[tabBar release];
[table release];
return( self );
}
Dealloc - не что иное, как [super dealloc], поскольку все по сути принадлежит представлению, и контроллер представления позаботится об этом.,Когда myPop выпущен, в DidDismissPopover, представление также освобождается, так что, кажется, работает нормально.Но очень скоро после этого я получаю сбой.
Нужно ли делать что-то особенное, чтобы отказаться от представления вкладок или представления таблицы, когда всплывающее окно закрывается?
Я использую авто-релиз на ячейкахв таблице, я должен прекратить делать это?
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
Заранее спасибо за любую помощь !!!Любые идеи приветствуются !!
-Кевин