Обновлен до xcode 4.2 теперь exc_bad_access на dimissModalViewcontroller

Привет у меня странная проблема.

Мое приложение основано на примере кода "PageControl" (пример Apple). Он использует горизонтальную прокрутку, в которой происходит большинство вещей. Внизу у меня есть UIToolbar, из которого я называю модальный viewcontroller.

На XCode 4 все работало как чудо, после обновления до XCode 4.2 (с новым SDK) я получаю "exc_bad_access" на dimissModalViewcontroller. Самое смешное, что это происходит не сразу, а только после 2 или 3 раз представления и отклонения modalViewcontroller.

Чтобы упростить вещи, я вернулся к исходному коду примера и попытался реализовать modalVieWcontroler в этом контексте. Пока не повезло.

В исходном коде PageControl я изменил тип ContentController с NSObject на UIViewController следующим образом:

@interface ContentController : UIViewController
{
    NSArray *contentList;
}

Я вызываю presentModalViewcontroller в подклассе (из ContentController) с именем PhoneContentController следующим образом:(я использую уведомление, чтобы я мог вызывать его из любого места)

-(void) showExplanationsModal:(NSNotification*)notification{

    ExplanationsViewController *xplViewController = [[[ExplanationsViewController alloc] initWithNibName:@"Explanations" bundle:nil]autorelease];

    [self presentModalViewController:xplViewController animated:YES];
}

Увольнение modalViewcontroller вызывается из самого модального представления следующим образом:(уведомление используется для инициации некоторых других вещей)

 - (IBAction)onClose
{
    [self dismissModalViewControllerAnimated:YES];

    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:self];

}

Этот код отлично работает с iOS4 SDK, но иногда отображает excec_bad_access с iOS5 SDK. Когда я компилирую приложение с iOS4 SDK, оно также нормально работает на устройствах iOS5. Я пытался использовать зомби, но это не указывает на конкретный перевыпущенный объект. Я застрял на этом уже несколько дней...

Я разместил копию примера проекта, который иллюстрирует проблему здесь http://www.sesni.biz/pagecontrol.zip

2 ответа

Решение

Нашел проблему: я изменил тип ContententController с NSObject на UIViewcontroller. Это работало нормально с iOS4 SDK, но вылетало с iOS5 SDK.

Мне кажется, что проблема в onClose метод. Попробуйте сначала отправить сообщение без объекта (этот объект скоро станет недействительным).

 - (IBAction)onClose
{
    [[NSNotificationCenter defaultCenter]postNotificationName:@"dismissExplanationsModal" object:nil];
    [self dismissModalViewControllerAnimated:YES];

}
Другие вопросы по тегам